单色位图
应该是一件容易的事。
我正在研究 Scala,试图处理长序列的二进制数据。这是一长串 0 和 1 的列表。存储/访问此类数据的“最佳”方式是什么?
这里的重点是内存优化,所以我想避免使用整个字节来存储布尔值。另外,访问也很重要,所以我想避免将它们打包到字节中,然后再打包到数组中。
位图是个好主意吗? scala中有这样的类吗?
如果没有,最好使用 ByteArray 吗?你会如何实施这个?
还有其他想法吗?
谢谢,
Should be an easy one.
I'm working on Scala trying to handle long sequences of binary data. That is long lists of 0's and 1's. What is the 'best' way to store/access this kind of data.
The important point here is memory optimisation, so I would like to avoid using an entire byte to store a boolean. Also access is somwhat important, so I would like to avoid paking them into bytes and then into arrays.
Is a BitMap a good idea? Is there such a class in scala?
if not, would it be best to use ByteArray? How would you implement this?
Any other ideas?
Thanks,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 java.util.BitSet (也许使用一些巧妙的显式使其更像 Scala)。
如果这仍然太昂贵,我会编写一个在内部使用数组的类,并将这些位打包成整数或字节。
You can use java.util.BitSet (perhaps with a couple if clever explicits to make it more Scala-like).
If that is still too costly I would write a class that uses an array internally and pack the bits into ints or bytes.
如果您的值分布不均匀(0 明显多于 1),您可以使用 游程编码 对图像数据进行编码。这是传真使用的编码。
有两种编码选项:
If your values are not uniformly distributed have (significantly more 0s than 1s) you can use run-length encoding to encode the image data. This is the encoding used by Fax.
There are two encoding options: