各种编程秘籍编程宝典都提到缓存是一个提高系统性能的利器,使用缓存可以使系统的处理速度吞吐量成倍的提高。今天做了实验来证实一下这个结论。
实验主要是测试在不同的缓存设置情况下拷贝一个文件所需要的时间长短。
实验的设置如下:
1.被拷贝的文件大小为1.4Mb
2.缓存的大小依次设置为1byte、6byte、11byte……
最后实验得出的结果非常震撼,见下图:
当缓存大小设置为1byte时复制一个1.4Mb的文件需要13000ms,当缓存大小为400byte时复制同样大小的文件只需要30ms。这有大约400倍的差别。
产生这种巨大差别的原因其实也很好理解,当缓存设置为1byte时,每存一byte数据就要进行一次磁盘操作,而缓存设置为400byte时,每存400byte才进行一次磁盘操作,而磁盘操作是整个程序里面最耗时的部分。
代码如下:
void test() throws IOException { for (int i = 1; i <= 500; i = i + 5) { long time = System.currentTimeMillis(); File ff = new File("d:/abc.jpg"); File fi = new File("d:/" + new Random().nextInt() + ".jpg"); fi.createNewFile(); BufferedInputStream ffreader = new BufferedInputStream(new FileInputStream(ff), i); BufferedOutputStream fiwriter = new BufferedOutputStream(new FileOutputStream(fi), i); int temp; while ((temp = ffreader.read()) >= 0) { fiwriter.write(temp); } ; ffreader.close(); fiwriter.close(); time = System.currentTimeMillis() - time; System.out.println(i + " " + time); } }