快速的 java byte[] 操作

Posted

技术标签:

【中文标题】快速的 java byte[] 操作【英文标题】:Fast java byte[] manipulation 【发布时间】:2014-10-03 22:58:40 【问题描述】:

我正在尝试开发将在嵌入式设备上运行的 Java 应用程序。由于它是嵌入式设备,因此速度可能相当慢。速度是一个重要因素。在对 java.nio.ByteBuffer 做了一些研究之后,我发现它很慢,可能我应该完全避免它。有人对如何轻松处理大字节 [] 有任何提示吗? ByteBuffer 很好,因为它提供了诸如 .getInt() 或 .getShort() 之类的方法以及切换 ByteOrder 字节序。我只能忍受 byte[] 的性能吗?

【问题讨论】:

专注于获取功能,然后看看是否真的存在性能问题。像这样过早的优化而没有真正发现问题通常只会导致更多的复杂性和令人头疼的问题。 【参考方案1】:

您可能想要分析您的应用程序以确保ByteBuffer 是一个瓶颈。但是,访问本机内存通常比使用 jvm 分配的内存要快...

ByteBuffer buf = ByteBuffer.allocateDirect(8192);

但是,在堆分配版本上分配本机 ByteBuffer 的成本更高。因此,您通常希望限制使用它们的数量。还存在平台差异,因此您可能还希望针对您的特定目的进行概要分析。

【讨论】:

以上是关于快速的 java byte[] 操作的主要内容,如果未能解决你的问题,请参考以下文章

Java byte位移操作 注意事项

Java对象与byte[]数组之间的相互转化,压缩解压缩操作

Java对象与byte[]数组之间的相互转化,压缩解压缩操作

JAVA服务器接收byte数组的问题

c# byte操作

JAVA IO操作的总结 和速度实验