今回はPythonの使いやすさと
C言語のパフォーマンスを併せ持つ
新プログラミング言語「Mojo」が
Colabで使える様になったので試してみました
解説動画はこちら
Mojoについて
MojoはPythonのスーパーセットとなる
新しい言語で、Pythonに比べて
パフォーマンスとメモリの安全性が向上しています
コンパイル言語になるので
少しだけやることは増えますが
Pythonの構文はサポートされていて
慣れればPython言語と同じように
コードを書き進める事が
出来るんじゃないかと思います
「Get Started」から
Mojoのサイトからメールアドレス等で
登録を行います
Mojo
Mojoのインストール
ライセンス登録すると
インストールコマンドが記載された
ページに飛ばされます
WindowsやMacなど、環境ごとの
コマンドが記載されていますので
Google Colabで動かす場合は
「Linux」を選びましょう
次のコマンドがライブラリ取得のコマンドです
実行の際には各個人事にIDが変わるので
自身のコマンドを手に入れて実行して下さい
ライブラリ取得できたら
次はインストールコマンドです
普通に実行すれば
問題なくインストール出来るかと思います
インストールが終わったかどうかは
確認コマンドで確認できます
MojoとPythonの速度比較
さて、それではPythonとMojoで
同じコードでの速度を比較検証してみましょう
3重ループでカウントするだけの
すごくシンプルな関数を実行して
時間を測るというコードになっています
・Pythonのコード
1億2千5百万回計算して
7-8秒ほど掛かる様です
・Mojoのコード
Mojoの場合は一度ファイルとして
作成しないといけません
ソースコードをそのままファイル化します
Mojoファイルの作成コマンド
これを実行するとGoogle Colabのファイル置き場に
main.mojoが作成されるハズです
このファイルをコマンドで動かします
mojoファイルを実行するコマンドはこれです
先ほどのPython実行は7-8秒ほどになるので
単純だけども、時間の掛かる計算をやらなければ
いけない場合に、一部をmojoに書き換えておけば
その分格段に速くなりそうですね
複雑なものだとコードの差異が大きいので
大変そうですが、簡単なアルゴリズムの
書き換え程度なら、実用出来かなと思いました
今後は機械学習系の実装も
徐々にMojoに置き換わって行くのかなと
推測します
速くなる分には
何のデメリットも無いですもんね
今後の動きを期待したいです
今回はMojoをGoogle Colabで試してみました
それでは
C言語のパフォーマンスを併せ持つ
新プログラミング言語「Mojo」が
Colabで使える様になったので試してみました
解説動画はこちら
Mojoについて
MojoはPythonのスーパーセットとなる
新しい言語で、Pythonに比べて
パフォーマンスとメモリの安全性が向上しています
コンパイル言語になるので
少しだけやることは増えますが
Pythonの構文はサポートされていて
慣れればPython言語と同じように
コードを書き進める事が
出来るんじゃないかと思います
MojoのSDKライセンス取得
Mojoを始めるにはライセンスが必要です
と言っても、メアドを登録するくらいです
Mojoを始めるにはライセンスが必要です
と言っても、メアドを登録するくらいです
「Get Started」から
Mojoのサイトからメールアドレス等で
登録を行います
Mojoのインストール
ライセンス登録すると
インストールコマンドが記載された
ページに飛ばされます
WindowsやMacなど、環境ごとの
コマンドが記載されていますので
Google Colabで動かす場合は
「Linux」を選びましょう
次のコマンドがライブラリ取得のコマンドです
!curl https://get.modular.com | \ MODULAR_AUTH= <自分のMODULAR_ID> \ sh -
実行の際には各個人事にIDが変わるので
自身のコマンドを手に入れて実行して下さい
ライブラリ取得できたら
次はインストールコマンドです
!modular install mojo
普通に実行すれば
問題なくインストール出来るかと思います
インストールが終わったかどうかは
確認コマンドで確認できます
!export MODULAR_HOME="/root/.modular" && \ export PATH="/root/.modular/pkg/packages.modular.com_mojo/bin:$PATH" && \ mojo --versionmojo 0.3.1 (a3eed7c8)
MojoとPythonの速度比較
さて、それではPythonとMojoで
同じコードでの速度を比較検証してみましょう
3重ループでカウントするだけの
すごくシンプルな関数を実行して
時間を測るというコードになっています
・Pythonのコード
# サンプルコード import time def test_def(n): count = 0.0 for i in range(n): for j in range(n): for k in range(n): count += 1.0 return count # Pythonでの実行時間 start_time = time.time() n=500 print(test_def(n)) elapsed_time = time.time() - start_time print(f"{elapsed_time}s")
125000000.0
7.398502826690674s
1億2千5百万回計算して
7-8秒ほど掛かる様です
・Mojoのコード
Mojoの場合は一度ファイルとして
作成しないといけません
ソースコードをそのままファイル化します
Mojoファイルの作成コマンド
%%writefile main.mojo from time import now def sample_def(n): var count: Float64 = 0.0 for i in range(n): for j in range(n): for k in range(n): count += 1.0 return count def main(): let start_time = now() let n: Int64 = 500 count = sample_def(n) print(count) let end_time = now() let execution_time = Float64(end_time - start_time) / 1000_000_000 print(execution_time)
これを実行するとGoogle Colabのファイル置き場に
main.mojoが作成されるハズです
このファイルをコマンドで動かします
mojoファイルを実行するコマンドはこれです
# Mojoの実行 !export MODULAR_HOME="/root/.modular" && \ export PATH="/root/.modular/pkg/packages.modular.com_mojo/bin:$PATH" && \ mojo main.mojo
125000000.0
0.18964049799999999
先ほどのPython実行は7-8秒ほどになるので
単純計算で40倍くらいは速くなっているようです
単純だけども、時間の掛かる計算をやらなければ
いけない場合に、一部をmojoに書き換えておけば
その分格段に速くなりそうですね
複雑なものだとコードの差異が大きいので
大変そうですが、簡単なアルゴリズムの
書き換え程度なら、実用出来かなと思いました
今後は機械学習系の実装も
徐々にMojoに置き換わって行くのかなと
推測します
速くなる分には
何のデメリットも無いですもんね
今後の動きを期待したいです
今回はMojoをGoogle Colabで試してみました
それでは