gpt4 book ai didi

Haskell/GHC 内存使用

转载 作者:行者123 更新时间:2023-12-03 15:51:37 26 4
gpt4 key购买 nike

我正在玩弄 Haskell 并编写文件。这是一小段代码,对于 [0..255] 中的每个“蓝色”,在 [0..255] 中使用“红色”和“绿色”在 PPM 中创建图像。它在文件夹中生成所有图像。

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

代码如下:

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]

一个完美的答案会解释我做错了什么,并给我建议如何解决这个内存问题,以免我的系统崩溃。

谢谢。

最佳答案

编译而不是从 ghci 中运行。在我的机器上,virt 的使用量从 5GB 增加到 140MB;编译版本的 res 从未超过 15MB。一般来说(除了极少数异常(exception)),ghci 的性能特征比编译程序差很多很多。

关于Haskell/GHC 内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33723285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com