问题标签 [bytestring]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
http - ByteString 需要不同的 ByteString
此代码不进行类型检查:
引发以下错误:
如何解决这个问题?更改为其他 ByteString 变体不起作用。
函数的类型simpleHttp
是这样的:simpleHttp
:: Control.Monad.IO.Class.MonadIO m =>
String -> m Data.ByteString.Lazy.Internal.ByteString
. 所以我尝试在 IO monad 中获取 ByteString 并尝试unpack
它,但这会导致错误。
haskell - 字符频率
我正在尝试使用Haskell查找文件中字符的频率。我希望能够处理 ~500MB 大小的文件。
我到目前为止所尝试的
它完成了这项工作,但有点慢,因为它解析文件 256 次
/li>我也尝试过使用 Data.Map 但程序内存不足(在 ghc 解释器中)。
/li>
haskell - parsec 组合子和 Text/ByteString
Data.ByteString
Haskell 解析器/组合器 Parsec 支持来自和的输入流Data.Text
。是否有计划在未来的版本中添加对这些类型的更多支持?组合器(many, sepby, string...)似乎是围绕列表设计的,首先使用 ByteStrings 和 Text 的原因是为了避开列表的使用。我知道大多数人会用一个包进行转换,因此这些列表将被垃圾收集掉,但这不只是对 Text/ByteString 的中途支持吗?不应该有 aData.Parsec.Text.Combinator
和 aData.Parsec.ByteString.Combinator
吗?
haskell - 在 Haskell 中,如何替换 ByteString 中的 ASCII 字符子字符串?
在Haskell中,如何替换 a 中的ASCII字符子字符串ByteString
?如何replace
在Data.ByteString.Search
使用字符串作为参数时使用函数?还有其他方法可以在 a 中执行子字符串替换ByteString
吗?例如,将 转换ByteString
为 a String
,使用 执行字符串替换String
,然后将结果转换回 a是否有意义ByteString
?
haskell - Data.ByteString 输出不正确
我正在编写一个程序,它将文本文件列表作为参数并输出一个文件,其中每一行是文件中相应行之间的选项卡的插入。
假设所有字符都是 ASCII 编码的
问题是它输出:
代替:
通过在 ghci 中手动定义函数进行测试时,相同的逻辑可以正常工作。Data.Text.Lazy
当使用而不是惰性Bytestring
s时,相同的代码可以正常工作。
我的方法有什么问题?
arrays - 如何使用 ByteString 在 Haskell 中输出整数数组?
我定义和填充的示例代码然后输出一个(整数)IOArray:
显然,我的真实代码计算(另一个)'a'整数数组的时间更长。我想使用字节串加速输出部分,但不知道该怎么做。
haskell - Data.Attoparsec.ByteString 是否使用“零复制”?
以takeWhile 为例。它在内部使用span。
这是否意味着它只引用输入字节串?可能不是,如果是这样,有没有办法做到这一点?
激励用例是一个大(> 2gb)文件,我想将其映射到内存中并提取指向映射内存的字节串。
haskell - BS.getLine 和 CRLF 结尾
我试图在使用时从行尾删除 \r BS.getLine
。我尝试过使用hSetNewlineMode
,它适用于getLine
但不适用于BS.getLine
:
还有什么我应该做的吗?
regex - 如何将 ByteString 与 NUL 字节匹配?
我想用一个匹配 NUL\x00
字节的正则表达式拆分一个巨大的(12GB)惰性 ByteString。
我知道这应该是可能的,因为我已经能够用 python 分割一个示例字符串:
我不确定它是否可以工作,但我想尝试一下 Haskell,因为它应该能够懒惰地读取文件并对其进行处理,而无需为整个字符串分配内存。(这应该比逐块处理、编写解析器或调整原始程序以输出更少损坏的东西更容易)。
ByteStrings 上的 Haskell 正则表达式匹配非常简单:
但是对 a 做同样的事情会\x00
产生一些奇怪的东西:
请注意,它并没有找不到匹配项(否则元组的第一个元素将是原始字符串),而是显然匹配不可见/隐式\x00
。
有什么提示吗?
performance - ByteString concatMap 性能
我有一个37MB
正在尝试转换为 ppm 序列的 bin 文件。它工作得很好,我试图用它作为练习来学习一些分析和更多关于 Haskell 中惰性字节串的信息。我的程序似乎在concatMap
, 用于复制每个字节 3 次,所以我有 R、G 和 B。代码相当简单——每 2048 个字节我写一个新的标头:
这有点过头了5s
。这并不可怕,我唯一的比较是我非常幼稚的 C 实现,它做得有点差4s
- 所以这或理想情况下是我的目标。
这是来自上述代码的 RTS:
相当粗糙的结果。当我删除 concatMap 并每隔 2048 字节复制所有内容时,它实际上是即时的:
所以我想我的问题有两个:
- 如何提高整体性能?
- 如果瓶颈不是那么明显,我可以通过哪些方法找到它?
谢谢你。
编辑
如果有人感兴趣,这是最终代码和 RTS!-prof -auto-all -caf-all
在阅读了Real World Haskell的Profiling and optimization一章后,我还能够通过使用 ghc 的分析器找到额外的瓶颈。