gpt4 book ai didi

扩展 java.nio.ByteBuffer 的 Java 循环字节缓冲区

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:13:36 24 4
gpt4 key购买 nike

我在 SO 和其他地方看到的每个 Java 循环字节缓冲区实现都没有扩展 java.nio.ByteBuffer,这对我来说是与 SocketChannel 一起使用所必需的。有谁知道扩展 ByteBuffer 的开源实现。我尝试自己编写,但当我意识到位置和剩余功能是最终的并且我打算覆盖它们以调整头部并防止缓冲区溢出异常时卡住了。在通过套接字 channel 发送 5000 条消息时,每个消息都需要我将内容复制到线性缓冲区的头部,这会为每条消息增加大约 450 毫秒或 90 微秒(其中包含 10 个数据包,因此每个数据包 9 微秒)。现在我能想到的唯一可行的方法是重写每个方法并重写所有内容。有什么想法吗?

最佳答案

您可以使缓冲区比一条消息大得多,而不是创建一个循环缓冲区。假设最大消息大小为 N 字节。创建一个 100 * N 字节的缓冲区,当剩余字节数少于 N 时,只有 compact() ByteBuffer。这会将复制量减少 100 倍。

另一个优化是在没有剩余数据时压缩()ByteBuffer,因为这非常快。

关于扩展 java.nio.ByteBuffer 的 Java 循环字节缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5188501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com