gpt4 book ai didi

Java/Android - 快速 ByteBuffer 解析

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:13:34 25 4
gpt4 key购买 nike

我正在用 java 为基于移动 android 的设备编写网络服务器。

这个网络服务器是单线程的,并遵循 nginx、node.js 和类似的背后的想法:不要生成多个线程,只需在事件循环中使用异步操作。

虽然使用多线程网络服务器可能会在最近的 x86 cpu 上提供更好的性能,但在基于 arm 的单核 cpu 上将需要做更多的工作。

澄清一下,我对 C 非常了解,并且我已经在纯 C 中实现了单线程网络服务器,或者在 C# 中实现了多线程网络服务器,利用了 Windows 上的 IOPS,但我只用 Java 编写了一个简单的网络服务器,我想换成这个新的。

现在,我正在使用 java nio,并且我读到 ByteBuffer 在转换为字符串时非常慢,但这不是问题,因为我不需要这样做,事实上我想要的 gaix 最大性能在字节级别实现解析和比较。

我的问题是,哪种解析字节缓冲区的方法更快?

我看到 ByteBuffer 支持 get 方法,可以访问单个字节并向前移动光标,支持数组方法,返回后备数组,所以我的问题是哪种方法更快?

我可以直接在支持数组上工作,还是应该避免使用 get?

我想实现一个 ByteBufferPool 来重用字节缓冲区,我会让它成为线程感知的,请阅读下文,这可能是个问题吗?

在某些情况下,我会比较字节与字节,应用掩码来处理区分大小写(我的意思是,如果第一个字节是 G,第三个是 T,第四个是空格(0x47、0x54 和 0x20)我可以将请求视为 GET 请求),在其他情况下,我需要将字符串与字节数组进行比较,例如 header (我将遍历字符串字符,将它们转换为字节并与字节进行比较)。

抱歉提出这些愚蠢的问题,但我不知道 Java 规范,也不知道 Java 内部的东西,所以我需要信息 :)

谁能给个提示? :)

PS:很明显,并不是所有的操作都可以用 do-stuff-pause-continue-return 的方式处理,所以我将实现一个 ThreadPool 来避免线程创建惩罚

最佳答案

试试 Netty。您可以控制线程模型,并且可以实现您所需要的。

关于Java/Android - 快速 ByteBuffer 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7933024/

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