各言語のARVv7とx86-64での実装のパフォーマンス比較
LPATHBench/writeup.md at master · logicchains/LPATHBench
同じ箇所に二回訪れずに最も長い経路を見つけるコードで。各言語の実装を、ARMv7とx86-84においてベンチマークしてみた結果が公開されている。
記事に書いてあるように、これは、ARMv7とx86-64のプロセッサーのベンチマーク比較ではなく、各言語の実装が、ARMとx86-64でどれだけ効率的に実装されているのかを比較している。
たとえば、C++はARMにおいてはx86-64の74%のパフォーマンスを出している。しかし、ARM版OpenJDKはなんと29%の速度しか出ていない。OracleによるJava実装は、40%ぐらいのパフォーマンスを出している。
コードはとても短いが、パフォーマンス改善のためのpull requestがどんどんよせられたらしく、その結果が興味深い。Javaでクラスではなく配列を使うようにしたら速くなったとか、C#のイテレーターは結構オーバーヘッドがあるだとか。
luajitが恐ろしく速いのが興味深い。