以前書いたC++がPythonより重い…でソースコードを載せると言いつつ載せて無かったので、引っ張り出してきました。
昔のことで記憶が曖昧ですが、たしかC++, Python, 生grep (追記: C#も)で
| データセット | 実験1 | 実験2 | 実験3 |
|---|---|---|---|
| ソースコード | int.*\( |
^.*$ |
^.*int.*$ |
| (英文?)和文 | は.*。 |
^.*$ |
^.*は.*$ |
をそれぞれ試しています。多分。
用いたデータセットや結果は過去のエントリを参照してください。
勿論「C++よりPythonが全面的に速い」「C++とPythonで同じアルゴリズムを実装すると後者が速い」ということが言いたいのではありません。(そしてそれは多分言えないと思う)
適当に使えそうな/気軽に使ってしまうライブラリ(C++ではboost, ICU、Pythonでは標準のエンコーディング変換関数とre)を自然に使ってみるだけだとPythonの方が早いこともあるらしい、という驚きと悲しみをちょっと記録しただけです。
「自然に」が自分の中では結構大事で、無理して良いなら当然自由度の高い低レベルな言語が一番チューニング出来る可能性がある、でもパラメタが多すぎて難しい。
まあPythonは標準ライブラリを使っているため、ちょっとチューニングしたいと思ったときに改変がやや面倒なのに対し、C++は標準ライブラリ以外を使っている(勿論stlも使ってますが)のでその辺は楽、という点はやや不公平ではあるかもしれませんが。
C++を自然に使ってより早い結果が得られる方法があれば、教えてもらえると嬉しいです。xpressiveとか使ったこと無いけどどうなんんでしょう。
追記
忘れていましたがPython vs C++ vs C# @ 7bitでC#版も書いていたらしい。記憶にない… でもソースもあったので追加しておきました。

No Comments yet »
コメント RSS TrackBack URI
コメントをどうぞ