标签:exe Java BufferedOutputStream BufferedInputStream osu FileOutputStream install 缓
BufferedInputStream/BufferedOutputStream在文件I/O过程中使用了缓冲区,从而提高了I/O性能。具体提升多少?下面进行测试
测试环境:
CPU:i3-4160 @3.6GHz
内存:4G DDR3 @1333MHz
硬盘:WDC_WD5000AAKX-08U6AA0 ATA
系统:Windows 7 旗舰版
采用文件加密与解密的方法对BufferedInputStream/BufferedOutputStream进行测试,对象文件为exe应用程序,大小4.3MB。
加密与解密的方法见我之前写的博客:Java文件加密与解密
测试方法如下
public static void main(String[] args) { String path = "osu!install.exe"; File file = new File(path); long start = System.currentTimeMillis(); EncryptionAndDeciphering.encryptFile(file); EncryptionAndDeciphering.decipherFile(new File("Encrypted_osu!install.exe")); long end = System.currentTimeMillis(); int time = (int) ((end - start)); System.out.println("Time:" + time); }
先加密osu!install.exe,产生Encrypted_osu!install.exe,再解密Encrypted_osu!install.exe。
测试结果如下,单位毫秒。
其中缓冲区大小为0代表直接使用FileInputStream/FileOutputStream。
可以看到,使用BufferedInputStream/BufferedOutputStream的平均时间为199ms,而使用FileInputStream/FileOutputStream的平均时间为39535ms,是前者的198.7倍,可见缓冲区的使用极大的提高了I/O性能。
那么具体缓冲区设置多大合适?
从上表可以看出,缓冲区特别小的时候,读写时间还是比较长。但当缓冲区超过1024Bytes是,测试结果已经相差不大,都在300ms以内了。但当缓冲区超过默认值8192Bytes时,继续扩大缓冲区会小幅增加读写时间,具体原因有待研究。
标签:exe,Java,BufferedOutputStream,BufferedInputStream,osu,FileOutputStream,install,缓
来源: https://www.cnblogs.com/elucidator/p/10458962.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。