小编use*_*050的帖子

为什么严格标志会增加内存使用量?

以下两个程序的区别仅在于变量st的严格标志

$ cat testStrictL.hs

module Main (main) where

import qualified Data.Vector as V
import qualified Data.Vector.Generic as GV
import qualified Data.Vector.Mutable as MV

len = 5000000

testL = do
  mv <- MV.new len
  let go i = do
          if i >= len then return () else
             do  let st = show (i+10000000)  -- no strictness flag
                 MV.write mv i st
                 go (i+1)
  go 0
  v <- GV.unsafeFreeze mv :: IO (V.Vector String)
  return v

main =
  do
     v <- testL …
Run Code Online (Sandbox Code Playgroud)

haskell

8
推荐指数
1
解决办法
390
查看次数

标签 统计

haskell ×1