我已經寫了一個haskell程序,它可以處理10000件事情。現在,僅僅爲了它,我用100萬美元跑了它,得到了stack space overflow
。如何診斷哈斯克爾堆棧溢出
我知道foldr/foldl問題以及可能由懶惰引起的問題,但是我目前不知道我的代碼中的哪一部分導致了這個問題。
攻擊這些問題的好方法是什麼?
我已經寫了一個haskell程序,它可以處理10000件事情。現在,僅僅爲了它,我用100萬美元跑了它,得到了stack space overflow
。如何診斷哈斯克爾堆棧溢出
我知道foldr/foldl問題以及可能由懶惰引起的問題,但是我目前不知道我的代碼中的哪一部分導致了這個問題。
攻擊這些問題的好方法是什麼?
我發現Debug.Trace模塊對此類事物很有用。在沒有看到任何代碼的情況下,很難提供一個有用的示例,但如果您查看該文檔,則可能會找到一些有用的示例。否則,我會檢查你的代碼是否可以填充調用堆棧的非尾部遞歸。
真實世界Haskell有關於空間泄漏分析的章節:http://book.realworldhaskell.org/read/profiling-and-optimization.html – cdk
可能的重複[是否可能在Haskell中分析空間使用情況](http ://www.stackoverflow.com/questions/12426266/is-it-possible-to-profiling-space-usage-in-haskell) – cdk