我试图在Haskell中使用hashtables包的哈希表,并发现我无法接近Python的性能.我怎样才能达到类似的性能?是否有可能给出当前的Haskell库和编译器?如果没有,那么潜在的问题是什么?
这是我的Python代码:
y = {}
for x in xrange(10000000):
y[x] = x
print y[100]
Run Code Online (Sandbox Code Playgroud)
这是我相应的Haskell代码:
import qualified Data.HashTable.IO as H
import Control.Monad
main = do
y <- H.new :: IO (H.CuckooHashTable Int Int)
forM_ [1..10000000] $ \x -> H.insert y x x
H.lookup y 100 >>= print
Run Code Online (Sandbox Code Playgroud)
这是另一个使用的版本Data.Map,对我来说比两者都慢:
import qualified Data.Map as Map
import Data.List
import Control.Monad
main = do
let m = foldl' (\m x -> Map.insert x x m) Map.empty [1..10000000]
print $ …Run Code Online (Sandbox Code Playgroud)