我试图了解Haskell的并行化性能.
我有一个长列表(长度> 1000),我正在使用parallel并行评估parMap
.
以下是+RTS -s
用于单个线程的完整统计信息输出(编辑:完整统计输出):
54,248,802,288 bytes allocated in the heap
324,451,424 bytes copied during GC
2,970,272 bytes maximum residency (4 sample(s))
52,064 bytes maximum slop
217 MB total memory in use (1 MB lost due to fragmentation)
Tot time (elapsed) Avg pause Max pause
Gen 0 251 colls, 0 par 1.45s 1.49s 0.0059s 0.0290s
Gen 1 4 colls, 0 par 0.03s 0.05s 0.0125s 0.0319s
TASKS: 4 (1 bound, 3 peak workers (3 total), using -N1) …
Run Code Online (Sandbox Code Playgroud) 在Haskell的镜头库中,ix
并且element
都可以使用Int an来例如在某个索引处读取或写入列表元素,就像这样
ghci> [1..10] ^? ix 4
Just 5
ghci> [1..10] & ix 4 .~ 1
[1,2,3,4,1,6,7,8,9,10]
Run Code Online (Sandbox Code Playgroud)
同样地:
ghci> [1..10] ^? element 4
Just 5
ghci> [1..10] & element 4 .~ 1
[1,2,3,4,1,6,7,8,9,10]
Run Code Online (Sandbox Code Playgroud)
element
和之间有什么区别ix
?
我正在使用管道库,需要String
使用ASCII编码将ByteString流转换为线流(即).我知道还有其他库(Pipes.Text和Pipes.Prelude)可能让我更容易从文本文件中产生行,但由于其他一些代码,我需要能够String
从Producer中获取行ByteString
.
更正式地说,我需要将a转换Producer ByteString IO ()
为a Producer String IO ()
,从而产生线条.
我相信,这一定是一个班轮对于有经验的管道,程序员,但我至今没能成功地通过所有的黑客FreeT
,并Lens
在管道-字节串-trickery.
任何帮助深表感谢!
斯蒂芬
在过去,我一直在使用mercurial中的largefiles扩展来将数据与我一直在处理的代码一起保存.我认为这是一个错误,我想删除"largefiles"目录(8GB).我们的网络用户目录限制为10 GB,我需要空间.我很久没有使用任何大文件了.当他们永远消失时,我不会想念他们.
所以我的问题是