python haskell 使用对比_性能-为什么这个Haskell程序比等效的Python程序慢得多?
作為編程挑戰(zhàn)的一部分,我需要從stdin讀取以空格分隔的整數(shù)序列(在一行上),并將這些整數(shù)的總和輸出到stdout。 所討論的序列可以包含多達(dá)10,000,000個(gè)整數(shù)。
我有兩種解決方案:一種是用Haskell(test.txt)編寫的,另一種是等效的用Python 2(foo.py)編寫的解決方案。 不幸的是,(已編譯的)Haskell程序始終比Python程序慢,并且我不知為何要解釋這兩個(gè)程序之間的性能差異。 請參閱下面的基準(zhǔn)部分。 如果有的話,我本來希望Haskell占上風(fēng)...
我究竟做錯(cuò)了什么? 我該如何解決這一差異? 有加速我的Haskell代碼的簡便方法嗎?
(有關(guān)信息,我使用的是2010年中的Macbook Pro,配備8Gb RAM,GHC 7.8.4和Python 2.7.9。)
test.txt
main = print . sum =<< getIntList
getIntList :: IO [Int]
getIntList = fmap (map read . words) getLine
(與test.txt編譯)
test.txt
ns = map(int, raw_input().split())
print sum(ns)
基準(zhǔn)測試
在下面,test.txt由一行由1000萬個(gè)以空格分隔的整數(shù)組成。
# Haskell
$ time ./foo < test.txt
1679257
real 0m36.704s
user 0m35.932s
sys 0m0.632s
# Python
$ time python foo.py < test.txt
1679257
real 0m7.916s
user 0m7.756s
sys 0m0.151s
總結(jié)
以上是生活随笔為你收集整理的python haskell 使用对比_性能-为什么这个Haskell程序比等效的Python程序慢得多?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 0pp0r11如何更改语言_如何写才能避
- 下一篇: vue如何使用原生js写动画效果_原生j