实验背景
最近在考虑一个问题:“如果快速地向文件中写入数据”,java提供了多种文件写入的方式,效率上各有异同,基本上可以分为如下三大类:字节流输出、字符流输出、内存文件映射输出。前两种又可以分为带buffer及不带buffer。
实验目标
通过实验找出单线程场景下文件写入效率最高的方式,并量化各种文件写入方式在效率上的差距。
实验设计
为减少其他环节的影响,示例代码使用循环输出同一字符串多次的方式测试整个输出环节的耗时,通过耗时、服务器资源使用情况(cpu、内存使用)等指标评判各种文件写入方式的效率好坏。
实验环境
OS: windows 7 64bit
cpu: 4core, 主频:2.4GHZ
mem:6G
jdk version:Java HotSpot(TM) 64-Bit ,1.8.0_101
实验步骤
总共进行8次输出实验,依次输出的文件大小为:10M、50M、100M、200M、500M、800M、1G、2G;
每次输出后记录各种方式的耗时情况,并填表。
实验结果
表1、java各种文件写入方法效率对比实验时延数据表
表1、java各种文件写入方法效率对比实验时延结果图(含大文件)