見出し画像

プログラミング言語のインタープリターとコンパイル言語のベンチマークしてみました

昔お世話になった社長さんからの依頼で
会社に採用する候補者の適性を見たいということで
面接は通った候補者のプログラミングのレクチャーをしてるのだが
初心者にレクチャーしてると色々学ぶことが多い。
先日はプログラム言語でインタープリター(RubyとLisp)と
中間言語にコンパイルする言語(Java)と
ネイティブコンパイルする言語(C言語)の
「開発しやすさ・理解しやすさ・動作速度の違い」
などを見てもらいました。
説明するだけじゃ足りないかなと思って
実際に自分でも作って、ベンチマークした結果が下記です。

💚(´ω`) < % time ./helloworld.rb && time ./HelloWorld.sh && time /usr/local/bin/sbcl --script ./helloworld.lisp && time ./hello-sbcl && time ./helloworld.cl && time ./hello-clisp && time ./helloworld

#Ruby
Hello World!!!💚
./helloworld.rb 0.39s user 0.25s system 78% cpu 0.822 total

#Java
Hello Katagiri!!!♪
./HelloWorld.sh 0.24s user 0.43s system 60% cpu 1.100 total

#sbcl
Hello World!!!😸
/usr/local/bin/sbcl --script ./helloworld.lisp 0.04s user 0.07s system 81% cpu 0.137 total

#sbcl実行ファイル
Hello World!!!😸
./hello-sbcl 0.03s user 0.06s system 83% cpu 0.106 total

#clisp
Hello World!!!🐩
./helloworld.cl 0.02s user 0.05s system 77% cpu 0.094 total

#clisp実行ファイル
Hello World!!!🐩
./hello-clisp 0.02s user 0.04s system 85% cpu 0.068 total

#C言語
Hello World!!!🚭
./helloworld 0.01s user 0.01s system 15% cpu 0.116 total

私が一番好んで使うRubyは0.39sでした。
(私が)一番開発しやすい言語です。

次が今教えているJavaが、0.24sです。
中間言語にコンパイルする割には
開発効率が悪くて、実行速度も遅くて
正直私が一番嫌いな言語です。

次が私が最近一番勉強してるのがLispで
sbclのインタープリターが0.04sで
実行ファイルだと0.03s。
clispはインタープリターでも実行ファイルでも0.02sでした。
何度か実行して平均値とか取らないといけませんが
今回は端折りました。
Lispはインタープリターのはずですが
この実行速度の早さは特筆に値すると思いますね。
確かLispハッカーのポール・グレアム氏が
「LispはC言語並みに早い!」と主張してたと
記憶してますが嘘じゃないです❗️

ただし、Lispでも実行ファイルにするとデカくなります。
sbclの場合は巨大です❗️

最後にC言語ですが0.01sでした。さすがですねぇ❗️

開発効率と実行速度を考慮すると
これからプログラムを学ぶ人は
LispとRubyを勉強するべきだと思ってます。

仕事とはいえ、プログラミング初心者に
Javaを教えるのは心が痛いです・・・

この記事が気に入ったらサポートをしてみませんか?