お知らせ
この記事の最新版 (2023/5版) が下記にあります。こちらもご参照ください。記事
シングルスレッドでほぼCPUだけを使う単純なアルゴリズムで1億までの素数を求めるプログラムを作成。その実行時間と最大使用メモリ量を測定した。 ソースコードはここに保存。言語 | 時間 (sec) | 最大使用物理メモリ(MiB) | 算出素数格納コンテナ | 補足情報 | 感想 |
---|---|---|---|---|---|
C | 12.6 | 24.1 | 固定長配列 | gcc 8.3.0 最適化-O3 |
- |
C++ | 64.8 | 36.0 | std::vector | gcc 7.3.0 最適化なし(-O0でビルド) |
- |
C++ | 12.7 | 36.0 | std::vector | gcc 7.3.0 最適化(-O3でビルド) |
最適化するとやはりかなり速くなる。メモリ使用量も圧倒的にすくない |
JAVA | 17.2 | 215.5 | ArrayList | OpenJDK 10.0.2 | C/C++の約1.5倍の実行時間。これまでの経験ともだいたい整合する |
Kotlin | 17.2 | 236.5 | List | Kotlin 1.3.61 | Javaと同等。コードの書きやすさを考えると悪くない選択肢 |
Scala | 20.1 | 2023.0 | mutable.ArrayBuffer | Scala 2.11.12 | 速度面ではJavaと比較して少し劣る程度だが、メモリ使用量がJavaの約10倍、C++の100倍近い。 |
Golang | 49.2 | 136.2 | slice | go1.11.6 | 予想より速くない。メモリ使用量もJavaの半分程度で、この結果だけだと使いみちが中途半端となるかも。 |
Node.js | 23.2 | 184.8 | Array | v8.10.0 | JavaやScalaに匹敵。予想より速い。メモリ使用量もそれほど多くない。 |
PHP | 151.2 | 196.7 | array | PHP 7.2.10 | 特に良いところもないような。無理に使うような言語ではないと思う。 |
Python | 451.8 | 3235.2 | list | 2.7 | 圧倒的に遅い。メモリ使用量も半端ない。でも、憎めないやつ。ほんとはこういう用途ではNumPyとか使うべきなのかな。後日numbaでも試してみたい。 |
Python3 | 592.8 | 238.3 | list | 3.6.7 | メモリ使用量はPython2に比べて大幅にすくないものの、実行速度がさらに遅くなった |
評価環境
- Intel Core i7 8559U (2.7GHz)
- DDR4 2400MHz 32GiB
- Ubuntu 18.04 LTS
0 件のコメント:
コメントを投稿