问题标签 [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.
haskell - ByteString 到惰性文本,反之亦然
我在将 ByteString 转换为 Text 时遇到问题,反之亦然。这是代码:
和错误信息:
所以,我猜这个错误与 ClientSession 实际使用的内容有关,在他们的源代码中,他们似乎使用了正常的字节串,这应该适用于我的实现。看这里:
那么为什么我会得到所有这些错误呢?谢谢。
haskell - Haskell - 你如何在二进制中添加一个字节串的长度?
我处于不幸的情况,我需要直接在 Haskell 中与 Java 套接字 API 交互。通过网络发送 Java 字符串的方式是将它们的长度添加到字符串的开头。
例如:
是字符串“Hello World”
我可以得到ByteString
没有问题的长度,但作为Int
. 我可以Word32
使用 Blaze Builder 将 a 添加到 ByteString,但我找不到Int
将Word32
. 是否有一些我找不到的便捷方法可以做到这一点?
谢谢。
regex - 匹配 Haskell Text.Regex.Posix.ByteString 中的 8 位字符
我的 Haskell 应用程序将输入读取为 ByteString 列表,我正在使用 Text.Regex.Posix.ByteString.regexec 来查找匹配项。某些输入有一个字符代码 253(它是一个 IBM PC 字符集中的 1/2 符号),看起来模式是 '.' (即点,“匹配任何字符”)不匹配。有什么办法让它匹配吗?
string - 在 Haskell 中读取字符串到 Int 的性能(Bytestring vs [Char])
只是对 Bytestring 和 String 做一些简单的基准测试。该代码加载了一个 10,000,000 行的文件,每个文件都是一个整数;然后将每个字符串转换为整数。原来Prelude.read
比 慢得多ByteString.readInt
。
我想知道效率低下的原因是什么。同时,我也不确定分析报告的哪一部分对应于加载文件的时间成本(数据文件约为 75 MB)。
这是测试的代码:
代码编译和执行如下:
注意“a.dat”是上述格式,大约 75MB。分析结果是:
编辑:
输入文件“a.dat”是 10,000,000 行数字:
在讨论之后,我将“a.dat”替换为 10,000,000 行 1,这不会影响上述性能观察:
haskell - ByteString 假设 ISO-8859-1?
Data.ByteString.hGetContents的文档说
与 hGet 一样,文件中的字符串表示假定为 ISO-8859-1。
为什么它必须“假设”关于“文件中的字符串表示”的任何内容?数据根本不一定是字符串或编码文本。如果我想要处理编码文本,我会使用 Data.Text 或者 Data.ByteString.Char8。我认为 ByteString 的全部意义在于数据被处理为 8 位字节列表,而不是文本字符。假设它是 ISO-8859-1 有什么影响?
parsing - Haskell:如何使用 attoparsec 从 ByteString 读取嵌套列表
我有一个带有嵌套列表的文本文件(大约 300 MB 大),类似于这个:
这是我将文件读入haskellInteger
列表的程序:
这适用于小文本文件,但我想用它ByteString
来快速读取文件。我发现read
ByteString 没有函数,你应该在 attoparsec 中编写自己的解析器,因为它支持解析 ByteStrings。
我如何使用它attoparsec
来解析嵌套列表?
haskell - 如何获得 ByteString 的 Ptr?
有没有办法从 ByteString 对象中提取指向内存的底层直接指针?编译器说,我目前的方法是不正确的。
haskell - 无法将预期类型“Data.ByteString.Internal.ByteString”与实际类型“ByteString”匹配
运行以下代码:
我收到以下编译错误:
我很困惑,因为我不明白为什么 aData.ByteString.Internal.ByteString
和 a 之间有区别ByteString
。
haskell - Haskell 字节串转浮点数组
您好,有我想要处理的浮点数据二进制文件(单精度 32 位 IEEE)。我怎样才能最好地加载它以供进一步使用,最好是(IOArray Int Float)。
c - 更快的 ByteString 构造技巧
我是 Haskell 的新手,我一直遇到效率问题。
任务是:从列具有恒定大小的 4GB 文本文件构建 CSV 文件
列大小是已知的,例如 [col1: 4 chars wide, col2: 2 chars wide, etc...
文件只能包含 [A-Z0-9] ASCII 字符,因此转义单元格没有意义
这是我在 Haskell 中最快的代码,处理整个 4GB 文件大约需要 2 分钟。
我最多需要 30 秒
这是我在 C http://pastebin.com/Kjz3Mugs中的实现
(在这里粘贴很长时间......)
处理同一个文件大约需要 5 秒
所以我的 Haskell 代码大约是。慢 20 倍。
因为 Haskell ByteString 过滤器和映射比我在 C 中的实现要快,
(两者都需要不到 2 秒的时间来处理同一个文件,做一些简单的修改)
我希望我的 Haskell 代码有问题,我不会被迫使用 C。
更新:测试数据生成器可在此处获得http://pastebin.com/aJ3RW3jG
在生产中,数据从一个二进制文件传输到另一个二进制文件,因此没有硬盘驱动器 IO
为了测试我使用 SSD 驱动器的解决方案,但我认为 Ext4 还是将该文件缓存在 RAM 中
香草发电机:
我的 C 解决方案:
带发电机
@GabrielGonzalez Haskell 解决方案
带发电机
我的 Haskell 解决方案
带发电机
@LukeTaylor 解决方案
带发电机