論文メモ A Comparative Study of Programming Lanugages in Rosetta Code
August 28, 2020Rosetta Codeに投稿された実装で言語の性能を比較した。 比較した言語は、Ruby, F#, Java, C#, Go, C, Python, Haskellの8つである。
Rosetta Codeは、同じタスクを解く異なる言語の実装例を集めたWebサイトである。 745件のタスクに対する7,087件の実装をもちいて、コードの短さ、実行ファイルの小ささ、処理性能の高さ、メモリの最大使用量やエラーの少なさを評価した。 ウィルコクソンの符号順位検定で測定結果の有意性と効果量を求めた。
結果をまとめると次のようになる。
- 関数型やスクリプト言語は、手続型やオブジェクト指向よりも短い行数で実装できる
- バイトコードが生成される言語のコンパイラは、ネイティブコードを出力する言語のものよりも小さい実行ファイルを生成する
- 計算量の大きい入力を与えると、Cは他の言語を引きはなす性能とメモリ効率を発揮する。GoはCの次点に位置する。bbただし、計算量が少ない入力だと、言語間の差は縮み、インタプリタ言語でも他言語と変わらない処理性能やメモリ効率を発揮する。
- 強い静的型付け言語は、インタプリタや弱い型付け言語よりもランタイムエラーが少ない。
以下に、評価観点ごとの言語間の比較を図示する。 水平上の距離は、おそよの測定値の比例関係を示す。 矢印の矢と根は2言語の優劣関係を示し、太さは効果量の大きさを表す。
- 論文をこちらからダウンロードできます。