鬱猫のつぶやき

鬱猫が日々思っていることをつづります

分子動力学シミュレーションコードをGoで書いてみる

はじめに

仕事でGoを時々使う。静的型付け言語で比較的動作も高速・書きやすいというのがあり重宝している。

高速と書いたが、あるアプリケーションを別々の言語で実装して速度を比較した場合、ざっくりと

C/C++, Fortran, Rust > Go > Java > Python, Ruby

みたいになるイメージを持っていたんだけども、これって本当なのかなとふと思った。

そこで、大学にいた頃にやっていた短距離古典分子動力学法のシミュレーションコードをGoで書いてみて、C++の実装と比較してみることにした。

ソースコードは以下にあげた。

github.com

比較対象としたC++の実装はkaityo256さんの以下のリポジトリのコード。

github.com

計測の条件は以下の通り

時間がなかったので、ひとまずstep1のBrute Forceで相互作用の計算を行う場合の性能の比較だけ行なった。

結果

Go C++
実行時間 18.43s 19.99s

あれ? Goの実装の方が速かった。なんかミスっている気がするな。。。 後日、真面目にプロファイリングしてみることにする。