Java/Android - 快速的 ByteBuffer 解析

7
我正在使用Java为基于移动Android的设备编写Web服务器。
这个Web服务器是单线程的,遵循nginx、node.js等思想:不要生成多个线程,只需在事件循环中使用异步操作。
虽然在x86最近的CPU上使用多线程Web服务器可能会提供更好的性能,但在基于ARM的单核CPU上需要做更多的工作。
我很清楚C语言,我已经在普通C语言中实现了单线程Web服务器或者在C#中实现了多线程Web服务器,利用Windows上的IOPS,但我只写过一个简单的Java Web服务器,我想用这个新的Web服务器来替换它。
现在,我正在使用Java NIO,并且我已经读到ByteBuffer在转换为字符串时相当慢,但这不是问题,因为我不需要这样做,事实上,为了获得最大的性能,我想在字节级别实现解析和比较。
我的问题是,哪种解析字节缓冲区的方法更快?
我看到ByteBuffer支持get方法,可以访问单个字节并将光标向前移动,支持array方法,返回支持数组,那么我的问题是哪种方法更快?
我可以直接在支持数组上工作,还是应该避免使用get?
我想实现一个ByteBufferPool来重用ByteBuffer,我会使其与线程相关,下面阅读,这可能是一个问题吗?
在某些情况下,我会逐字节比较,应用掩码处理大小写敏感性(我的意思是,如果第一个字节是G,第三个是T,第四个是空格(0x47、0x54和0x20),我可以将请求视为GET请求),在其他情况下,我需要将字符串与字节数组进行比较,例如头部(我将循环遍历字符串字符,将它们转换为字节并与字节进行比较)。
对于这些愚蠢的问题,我很抱歉,但我不了解Java规范,也不知道Java内部的东西,所以我需要信息:)
有人可以给一个提示吗?:)
PS:显然,并非所有操作都可以以做事-暂停-继续-返回的方式处理,因此我将实现一个线程池来避免线程创建惩罚。
1个回答

1

尝试使用Netty。 您可以控制线程模型,并且只需实现所需内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接