Java:字符串(byte[])的更快替代品
我正在为二进制数据开发一个基于Java的下载器。此数据通过基于文本的协议(UU 编码)传输。对于网络任务,使用 netty 库。二进制数据被服务器拆分成数千个小数据包并发送到客户端(即Java应用程序)。
从netty,每次收到新消息(数据)时,我都会收到一个对象。现在我需要处理这些数据,除了其他任务之外,我还需要检查来自服务器的包的标头(如HTTP状态行)。为此,我调用以接收数组。然后,我可以通过此数组转换为字符串,并轻松检查(例如比较)其内容(再次,例如与HTTP中的“200”状态消息进行比较)。ChannelBuffer
ChannelBuffer.array()
byte[]
new String(byte[])
我正在编写的软件使用多个线程/连接,因此我并行接收来自netty的多个数据包。
这通常工作正常,但是,在分析应用程序时,我注意到,当与服务器的连接良好并且数据进入得非常快时,这种到对象的转换似乎是一个瓶颈。在这种情况下,CPU使用率接近100%,并且根据探查器,调用此构造函数花费了大量时间。String
String(byte[])
我寻找一种更好的方法来从到a,并注意到前者也有一种方法。但是,该方法甚至比构造函数慢。ChannelBuffer
String
toString()
String(byte[])
所以我的问题是:你们中是否有人知道更好的替代方案来实现我正在做的事情?