Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell/GHC内存使用率_Haskell_Memory_Crash_Ghc - Fatal编程技术网

Haskell/GHC内存使用率

Haskell/GHC内存使用率,haskell,memory,crash,ghc,Haskell,Memory,Crash,Ghc,我在和Haskell玩,写文件。 下面是一段代码,它为[0..255]中的每个“蓝色”创建一个PPM格式的图像,在[0..255]中显示“红色”和“绿色”。它在文件夹中生成所有图像 这个小程序使我的电脑崩溃,使用超过5 gB的内存,我不知道为什么。我让他做的事情对我来说似乎很简单,生成的图像占用的总空间是-200MB。。。我不明白为什么记忆会爆炸 代码如下: import System.Directory import Data.Colour.SRGB import Data.List.Spli

我在和Haskell玩,写文件。 下面是一段代码,它为[0..255]中的每个“蓝色”创建一个PPM格式的图像,在[0..255]中显示“红色”和“绿色”。它在文件夹中生成所有图像

这个小程序使我的电脑崩溃,使用超过5 gB的内存,我不知道为什么。我让他做的事情对我来说似乎很简单,生成的图像占用的总空间是-200MB。。。我不明白为什么记忆会爆炸

代码如下:

import System.Directory
import Data.Colour.SRGB
import Data.List.Split

gridColours         = [[RGB 255 0 0, RGB 0 255 0], [RGB 0 0 255, RGB 0 0 0]]
gridColours2 b      = chunksOf 256 [RGB r g b| r <- [0..255], g <- [0..255]]

dimensions l        = (length . head $ l, length l)
coupleToList (a,b)  = [a,b]
genDataLines list   = unwords . (map showColour) . concat $ list
genDims list        = unwords . (map show) . coupleToList . dimensions $ list
writePPM list path  = writeFile path $ unwords $ ["P3", genDims list, "255", genDataLines list]
showColour c        = unwords . (map show) $ [channelRed c, channelGreen c, channelBlue c]

main = do
    createDirectoryIfMissing True "/tmp/PPM-out/"
    mapM_ (\x -> writePPM (gridColours2 x) ("/tmp/PPM-out/image"++(show x)++".ppm")) [0..255]
导入系统目录
导入数据.color.SRGB
导入Data.List.Split
网格颜色=[[RGB 255 0 0,RGB 0 255 0],[RGB 0 0 255,RGB 0 0 0]]

gridcolors2b=chunksof256[RGB r b | r编译,而不是从ghci内部运行。在我的机器上,virt使用量从5GB增加到140MB;对于编译版本,res从未超过15MB。一般来说(除了极少数例外),ghci的性能特征比编译程序的性能差得多