buffer.clear()或分配新的

时间:2016-11-02 13:41:04

标签: java bytebuffer

我有一个java类,它将小消息(< 100字节)写入缓冲区。我有三种消息类型,所以我分配了3个缓冲区。

// Cache seprate buffers for each message type
Class MyWriter(){
    private ByteBuffer loginBuffer = ByteBuffer.allocate(35);
    private ByteBuffer registerBuffer = ByteBuffer.allocate(23);
    private ByteBuffer placeOrderBuffer = ByteBuffer.allocate(75);
    ....
    }

然后我在新的写入上重用它们。例如:

 private void writeLogin(){
    loginBuffer.clear();
    loginBuffer.putLong(...)
    ...
 }

 private void writeRegister(){
    writeBuffer.clear();
    writeBuffer.putLong(...)
    ...
 }

我描述了我的应用程序,这个类是花费大部分处理时间的地方。

我最初认为分配缓冲区一次更有效,然后运行.clear()方法,而不是在每次读取时分配新的缓冲区。但是,虽然这确实更节省内存,但buffer.clear()方法需要更多的CPU时间,因为它必须找到缓冲区在内存中的位置吗?

**我的问题是:**它实际上是一个更好的设计,即时分配? IE:

private void writeLogin(){
    loginBuffer = ByteBuffer.allocate(35)
    loginBuffer.putLong(...)
    ...
 }

当然,它会浪费更多内存,但如果加快处理时间,那就太好了。有经验法则,还是有人已经考虑过这个?

我是Java新手,不知道如何测试这样简单的东西。

0 个答案:

没有答案