首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

ByteBuffer拷贝效率有关问题(80分相送)

2012-01-18 
ByteBuffer拷贝效率问题(80分相送)大家好,以下是我的一段拷贝ByteBuffer的代码,功能为从msgBuffer中拷贝ab

ByteBuffer拷贝效率问题(80分相送)
大家好,以下是我的一段拷贝ByteBuffer的代码,功能为从msgBuffer中拷贝abc开头d结尾部分的数据到swapBuffer中,一直拷贝到没有为止,功能虽然实现了,但小弟感觉如此处理效率不是很高,当中用了很多的get,put方法比较了Bytebuffer中的没个字节,各位前辈们实际中是否有批量处理的方法,或者其他方面可以提高程序的处理效率????小弟在此谢过了。

private   boolean   SwapBuffer()   {                  
int   roundcount   =0;
try{
                while(msgBuffer.position() <msgBuffer.limit()){                
                byte   srcByte   =   msgBuffer.get();
                if((char)srcByte   == 'a '){
                srcByte   =   msgBuffer.get();          
                if((char)srcByte   == 'b '){
                        srcByte   =   msgBuffer.get();
                        if((char)srcByte   == 'c '){
                        ByteBuffer   swapBuffer   =   ByteBuffer.allocate(10240);
                                        StringBuffer   buffer   =   new   StringBuffer();
                                        swapBuffer.put((byte) 'a ');
                                buffer.append( 'a ');
                               
                                swapBuffer.put((byte) 'b ');
                                buffer.append( 'b ');
                               
                        swapBuffer.put(srcByte);
                        buffer.append((char)srcByte);
                        srcByte   =   msgBuffer.get();
                        while((msgBuffer.position() <msgBuffer.limit())
                                &&((char)srcByte!= 'd ')){
                        swapBuffer.put(srcByte);
                        buffer.append((char)srcByte);
                        srcByte   =   msgBuffer.get();
                        }
                        if((char)srcByte== 'd '){                        


                        swapBuffer.put(srcByte);
                        buffer.append((char)srcByte);
                        swapBuffer.flip();                                              
                                               
                                                System.out.println( "Operation   finished. ");                                                      
                        }
                                }
                        }
                }
                }
}catch(Exception   e){
return   false;
}
                return   true;
        }

[解决办法]
基本就这样了
还能高到哪去

不如直接找到开始和结束的位置,然后用System。arrayCopy不就完了
[解决办法]
效率不是很低吧?没问题呀,不过如果没有d怎么办?
[解决办法]
你的处理好像有点问题,像这样的 aabc1231d
会被忽略
[解决办法]
对,的确存在这个问题,稍微改改逻辑
[解决办法]
效率不低啊
[解决办法]
路过 顶个

热点排行