数据报数据包上的 ByteBuffer 与 Buffer

发布于 2024-10-14 10:56:27 字数 207 浏览 0 评论 0原文

我读到应该使用 ByteBuffer (java.nio) 代替 Buffer 类来读取数据,因为它更高效(?)。我的问题围绕一个 UDP 客户端,该客户端从多播地址读取数据包并将其处理为原始对象。从 DatagramSocket 解析这些数据包的最有效/最快的方法是什么?现在,我有一个数据报包,我将其字节数组包裹在 ByteBuffer 中并从那里读取。我的目标是最小化新对象的创建并最大化速度。

I've read that ByteBuffer (java.nio) should be used over the Buffer class for reading in data simply because it's more efficient (?). My question revolves around a UDP client that reads packets from a multicast address and processes them into primitive objects. What is the most efficient/fastest way to parse these packets from a DatagramSocket? Right now, I have a datagram packet whose byte array I wrap a ByteBuffer around and read from there. My goal is to minimize new object creation and maximize speed.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我很坚强 2024-10-21 10:56:27

DatagramSocket 无法直接读入 ByteBuffer,但您可以使用 DatagramChannel 代替。

A DatagramSocket cannot read directly into a ByteBuffer, but you can do this using a DatagramChannel instead.

烟酒忠诚 2024-10-21 10:56:27

我认为使用 ByteBuffer 只是因为从程序员的角度来看 Buffer 没有足够的功能来提高访问效率,而不是从效率的角度来看。我怀疑效率是否存在差异,因为底层代码大多是重复的。

请注意,这是否比使用简单字节数组更有效并不总是很清楚——NIO 性能很容易被错误估计。

I think ByteBuffer is to be used just because Buffer does not have enough functionality to make access efficient from programmer's point of view, not from efficiency. I doubt there is difference in efficiency as underlying code is mostly duplicate.

Note tho that whether either is more efficient than using simple byte arrays is not always clear -- NIO performance is easy to misestimate.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文