改めて色々なプログラミング言語の実行速度を比較してみた
前回の記事の続きです。
前回、「Go言語の実行速度を他の言語と比較してみた」という記事を書きました。
その記事では、Javaが1番速く、C言語は3番目でそこまで速くないという結論が出ました。
実は、この記事に対して指摘がありましたので、今日は改めて再実験をしてみました。
目次
スポンサーリンク
前回の実験のまとめ
再実験の前に、前回の実験を振り返ってみましょう。
(詳しく知りたい人は関連リンクをご覧ください。)
比較した4つの言語
Go言語、C言語、Java、Pythonの4つで行いました。
実験方法
1から1,000,000までの素数を求めるプログラムを実行し、完了するまでにかかった時間を計測しました。これを計3回ずつ行いました。
ソースコード
各々のソースコードは、GitHubに貼りましたので、そちらをご覧ください。
https://github.com/meideru/PrimeSpeedTest
結果
実験結果は以下の通りでした。
言語名 | 1回目 | 2回目 | 3回目 |
Go言語 | 541.38秒 | 546.18秒 | 543.36秒 |
C言語 | 563.23秒 | 563.32秒 | 561.96秒 |
Java | 543.91秒 | 543.08秒 | 541.13秒 |
Python | 18時間程度 | 18時間程度 | 18時間程度 |
これが以前行った実験でした。
指摘されたこと
「標準出力に文字列を表示したら遅くなるからダメだ」と指摘されました。
以前の実験では、求めた素数を標準出力に表示していました。
2
5
7
11
13
(以下略)
みたいな感じで。
これがダメだと言われました。
改めて再実験してみる
改めて再実験を行ってみようと思います。
実験方法
以前と全く同じ方法でやります。
各々の言語で1~1,000,000までの素数を求めて、完了するまでにかかった時間を計測します。
これを計4回ずつ繰り返します。
実験環境
これも以前と全く同じ方法でやります。
さくらインターネットのVPSで行います。
ソースコード
ソースコードも同様にGitHubに貼りましたので、そちらをご覧ください。
GitHubへのリンク
変更点としては、求めた素数を標準出力に表示しないようになっています。
実験結果
改めて実験したところ、以下のような結果になりました!
言語名 | 1回目 | 2回目 | 3回目 |
Go言語 | 546.14秒 | 559.88秒 | 558.18秒 |
C言語 | 506.16秒 | 515.84秒 | 514.68秒 |
Java | 502.17秒 | 515.15秒 | 517.14秒 |
Python | 42221.57秒 | 39401.10秒 | 41132.59秒 |
考察
やはり、Javaが最速でした。
Javaなんて鈍足のイメージがあったのですが、最近は違うのですね(;´・ω・)
そして、僅差でC言語が早かったです。
Go言語はJavaやC言語の速さには及ばず。。。
Pythonは相変わらずでした笑。
まとめ
改めて考えてみても、Javaがなぜこんなにも速いのか不思議です。
今回はひたすら素数を求めるという方法で実験してみましたが、他の方法でやれば、また違った結果が得られるのかもしれません。
以上です。
ノシ
スポンサーリンク
関連記事