yon*_*ong 5 performance garbage-collection haskell
考虑以下程序:
module Main where
import Control.Monad.List
main = runListT $ do
x <- ListT $ return $ [0..1000000000]
lift $ print x
Run Code Online (Sandbox Code Playgroud)
理想情况下,我们希望在使用它时对列表进行垃圾收集,以便该程序仅使用常量内存.但是当我编译并运行它时
ghc Main.hs -O2 -o Main
我看到它继续使用越来越多的内存.如何让Haskell向GC说服列表中消耗的元素?
Gab*_*lez 10
将ListT在transformers不流还是在不断的空间中运行.将ListT在pipes呢!
import Control.Monad (mzero)
import Pipes
main = runListT (do
x <- Select (each [0..1000000000])
lift (print x)
mzero )
Run Code Online (Sandbox Code Playgroud)
我pipes-4.1.4今天也刚刚上传,放松runListT了不要求mzero最后,所以它只是:
-- Requires `pipes-4.1.4`
import Pipes
main = runListT (do
x <- Select (each [0..1000000000])
lift (print x) )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |