ハスケルで提案した(ベクトルから数百万の数を合計した)問題を見て、彼の結果と比較するために、この投稿に触発されました。ハスケルの効率的な数値計算
私はハスケル初心者ですので、正しく時間を設定する方法やこれを効率的に行う方法がわかりません。この問題の最初の試みは次のとおりです。私は良い方法でやり方がわからないので、私はベクトルに乱数を使用していないことに注意してください。私は完全な評価を確実にするために物を印刷しています。
import System.TimeIt
import Data.Vector as V
vector :: IO (Vector Int)
vector = do
let vec = V.replicate 3000000 10
print $ V.length vec
return vec
sumit :: IO()
sumit = do
vec <- vector
print $ V.sum vec
time = timeIt sumit
読み込んで、このアップGHCiの中やtime
を実行しているが、それは300万番号3000万の番号の2.69sのために実行するのに約0.22sを取ったことを私に伝えます。
Lushの0.02秒と0.18秒のブログ作成者の結果と比較すると、これはかなり悪くなります。これは、これがより良い方法で実行できると信じています。
注:上記のコードでは、実行するにはTimeItパッケージが必要です。 cabal install timeit
が手に入れます。
測定する内容に注意してください。現時点では、ベクトルの割り当てと合計の両方を測定しています。 –
ghciでパフォーマンステストを実行しないでください。 ghc --make -O2を使用してください。 –
'ique'、' vector'パッケージの使い方に関する優れたチュートリアルをチェックしてください:http://www.haskell.org/haskellwiki/Numeric_Haskell:_A_Vector_Tutorial – applicative