问题标签 [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.

0 投票
1 回答
1100 浏览

http - ByteString 需要不同的 ByteString

此代码不进行类型检查:

引发以下错误:

如何解决这个问题?更改为其他 ByteString 变体不起作用。

函数的类型simpleHttp是这样的:simpleHttp :: Control.Monad.IO.Class.MonadIO m => String -> m Data.ByteString.Lazy.Internal.ByteString. 所以我尝试在 IO monad 中获取 ByteString 并尝试unpack它,但这会导致错误。

0 投票
4 回答
935 浏览

haskell - 字符频率

我正在尝试使用Haskell查找文件中字符的频率。我希望能够处理 ~500MB 大小的文件。

我到目前为止所尝试的

  1. 它完成了这项工作,但有点慢,因为它解析文件 256 次

    /li>
  2. 我也尝试过使用 Data.Map 但程序内存不足(在 ghc 解释器中)。

    /li>
0 投票
1 回答
334 浏览

haskell - parsec 组合子和 Text/ByteString

Data.ByteStringHaskell 解析器/组合器 Parsec 支持来自和的输入流Data.Text。是否有计划在未来的版本中添加对这些类型的更多支持?组合器(many, sepby, string...)似乎是围绕列表设计的,首先使用 ByteStrings 和 Text 的原因是为了避开列表的使用。我知道大多数人会用一个包进行转换,因此这些列表将被垃圾收集掉,但这不只是对 Text/ByteString 的中途支持吗?不应该有 aData.Parsec.Text.Combinator和 aData.Parsec.ByteString.Combinator吗?

0 投票
2 回答
843 浏览

haskell - 在 Haskell 中,如何替换 ByteString 中的 ASCII 字符子字符串?

Haskell中,如何替换 a 中的ASCII字符子字符串ByteString?如何replaceData.ByteString.Search使用字符串作为参数时使用函数?还有其他方法可以在 a 中执行子字符串替换ByteString吗?例如,将 转换ByteString为 a String,使用 执行字符串替换String,然后将结果转换回 a是否有意义ByteString

0 投票
2 回答
74 浏览

haskell - Data.ByteString 输出不正确

我正在编写一个程序,它将文本文件列表作为参数并输出一个文件,其中每一行是文件中相应行之间的选项卡的插入。

假设所有字符都是 ASCII 编码的

问题是它输出:

代替:

通过在 ghci 中手动定义函数进行测试时,相同的逻辑可以正常工作。Data.Text.Lazy当使用而不是惰性Bytestrings时,相同的代码可以正常工作。

我的方法有什么问题?

0 投票
0 回答
324 浏览

arrays - 如何使用 ByteString 在 Haskell 中输出整数数组?

我定义和填充的示例代码然后输出一个(整数)IOArray:

显然,我的真实代码计算(另一个)'a'整数数组的时间更长。我想使用字节串加速输出部分,但不知道该怎么做。

0 投票
1 回答
146 浏览

haskell - Data.Attoparsec.ByteString 是否使用“零复制”?

takeWhile 为例。它在内部使用span

这是否意味着它只引用输入字节串?可能不是,如果是这样,有没有办法做到这一点?

激励用例是一个大(> 2gb)文件,我想将其映射到内存中并提取指向映射内存的字节串。

0 投票
1 回答
334 浏览

haskell - BS.getLine 和 CRLF 结尾

我试图在使用时从行尾删除 \r BS.getLine。我尝试过使用hSetNewlineMode,它适用于getLine但不适用于BS.getLine

还有什么我应该做的吗?

0 投票
2 回答
595 浏览

regex - 如何将 ByteString 与 NUL 字节匹配?

我想用一个匹配 NUL\x00字节的正则表达式拆分一个巨大的(12GB)惰性 ByteString。

我知道这应该是可能的,因为我已经能够用 python 分割一个示例字符串:

我不确定它是否可以工作,但我想尝试一下 Haskell,因为它应该能够懒惰地读取文件并对其进行处理,而无需为整个字符串分配内存。(这应该比逐块处理、编写解析器或调整原始程序以输出更少损坏的东西更容易)。

ByteStrings 上的 Haskell 正则表达式匹配非常简单:

但是对 a 做同样的事情会\x00产生一些奇怪的东西:

请注意,它并没有找不到匹配项(否则元组的第一个元素将是原始字符串),而是显然匹配不可见/隐式\x00

有什么提示吗?

0 投票
2 回答
202 浏览

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 的分析器找到额外的瓶颈。