Ref.: 程序語言性能比拚 | 酷殼 - CoolShell.cn
這個程式語言性能競賽之所以吸引我,主要是因為他的 benchmark 好幾個都跟生物資訊演算法有關。我主要是想比較幾個我比較有興趣的語言,PHP, Python, Perl, C/C++。
不過看了一下,我發現 implementation 還是大問題。例如,很多 Python Code 比 PHP Code 還慢。這其實不太合理,畢竟 Python 都已經被用在科學計算上了。以 N-body problem 來說,PHP, Python, Perl 的表現都非常接近。至於在 spectral-norm benchmark 上,雖然 PHP 比較好一點,但是似乎也不是差距很大。但是其中一個 python code 採用 numpy 之後,執行時間只要 12.68 秒,將近百倍的 speedup。這當然是因為 NumPy 底層是用 C 來寫得關係。另一個 alternative Python code,則花了 15 分鐘,也進步了四分鐘左右,反而比 PHP code 還快了兩分鐘左右。
這一方面展露出 Python 的擴展能力,但是另一方面,也顯露出了這類比較的困難之處。即使是採用相同的演算法和 package,還是很難做到公平。不同的 programmer 造成的差距,在同一個 語言的幾個 alternative program 之間就看得很清楚了。
同樣的狀況也會發生在演算法的比較上。所以我一直想看看 Journal of Experimental Algorithmics 是否有比較好得解決方案,畢竟既然要做到 algorithmic engineering ,這個部份應該要做得比較精細一點。
沒有留言:
張貼留言