CPU Ölçme süresi aşağıdaki gibi bir fonksiyonun işlemci süresini ölçmek için gereken:Haskell'in bir fonksiyonu
t <- getCPUTime
res <- callTheFunction input
t' <- getCPUTime
print $ t' - t
sorun Haskell tembellik gelir. callTheFunction kesinlikle değerlendirilmelidir. Ben çok arandı ve seq ve $ kullanmaya çalıştı! ama başarı olmadan. Bunun oldukça yaygın bir görev olduğunu düşünüyorum. Her neyse, biraz yardıma ihtiyacım var. Teşekkürler.
Güncelleme: Tüm yardımlarınız için teşekkürler, özellikle @FUZxxl. Bana WHNF (Zayıf Kafa Normal Formu) ve Normal Form arasındaki farkı hatırlatıyor. Haskell/Laziness Haskell'in tembel değerlendirmesini anlamaya yardımcı olur.
İhtiyacım olan şey bir adım adım değerlendirmedir. Neyse, $ veya her ikisi sürece sadece WHNF res için gereklidir işleri değerlendirmek:
t <- getCPUTime
res <- callTheFunction input
evaluate res OR return $! res
t' <- getCPUTime
print $ t' - t
Bu, sıkılık sorununuzu çözmez (bunun için değerlendirme yapın), ancak hızlı ve kirli zamanlamalar için (yani, ölçütden daha basit), timeIt paketini kullanabilirsiniz: http: //hackage.haskell. org/package/timeit – sclv