首页 > 代码库 > java nio/io性能比较
java nio/io性能比较
在看mina的时候看到java的nio。
详细的java nio 请看传送门:http://www.ibm.com/developerworks/cn/education/java/j-nio/index.html
以前项目上传附件自定义缓冲区方式代码
OutputStream os = client.storeFileStream(new String(newFileName.getBytes("GBK"),"ISO-8859-1")); byte buf[] = new byte[8192]; int bytesRead = data.read(buf); Float filesize = 0f + bytesRead; while (bytesRead != -1) { os.write(buf, 0, bytesRead); bytesRead = data.read(buf); filesize = filesize + bytesRead; }
自己大概测试了一下上传10M的附件这种方式用时大概为22751ms。
使用nio修改后代码
ReadableByteChannel fcin = Channels.newChannel(data); WritableByteChannel fcout = Channels.newChannel(os); Float filesize = (float) data.available(); ByteBuffer buffer = ByteBuffer.allocate(8192); while(true){ buffer.clear(); int r = fcin.read(buffer); if (r==-1) { break; } buffer.flip(); fcout.write( buffer ); }
自己大概测试了一下上传10M的附件这种方式用时大概为19743ms。
大概快了3m左右,提高了用户体验。使用nio是个不错的选择。
更多nio参考请见:http://docs.oracle.com/javase/7/docs/api/java/nio/channels/Channels.html
出处:http://www.cnblogs.com/Feeling-always-wrong/
本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。