meideru blog

meideruが書いているブログです。主に電子工作・プログラミング・ガジェット類などを中心に記事を書いています。

改めて色々なプログラミング言語の実行速度を比較してみた

      2016/12/13

前回の記事の続きです。

Go言語の実行速度を他の言語と比較してみた
最近、Go言語に没頭しています。 Go言語には「実行速度が高速である」というメリットがあります。Go言語の実行速度とは、どれくらい速いのでしょうか?今日はそれを確かめるために、Go言語を含めた色々な言語でプログラムを書いて、実行速度を試してみようと思...

 

前回、「Go言語の実行速度を他の言語と比較してみた」という記事を書きました。

その記事では、Javaが1番速く、C言語は3番目でそこまで速くないという結論が出ました。

実は、この記事に対して指摘がありましたので、今日は改めて再実験をしてみました。

前回の実験のまとめ

再実験の前に、前回の実験を振り返ってみましょう。

Go言語の実行速度を他の言語と比較してみた
最近、Go言語に没頭しています。 Go言語には「実行速度が高速である」というメリットがあります。Go言語の実行速度とは、どれくらい速いのでしょうか?今日はそれを確かめるために、Go言語を含めた色々な言語でプログラムを書いて、実行速度を試してみようと思...

(詳しく知りたい人は関連リンクをご覧ください。)

比較した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がなぜこんなにも速いのか不思議です。

今回はひたすら素数を求めるという方法で実験してみましたが、他の方法でやれば、また違った結果が得られるのかもしれません。

 

以上です。

ノシ

 - プログラミング