我正在为我用 Java 编写的项目运行一些关于图像的测试。我得到了一个有趣的结果,但不知道为什么。这是 BufferedImage
和 Image
的初始化行。
File[] files = new File("C:\\Users\\SAMSUNG\\Desktop\\img\\").listFiles();
time = System.currentTimeMillis();
for (File f:files){
Image img = ImageIO.read(f);
}
System.out.println((System.currentTimeMillis() - time) + " miliseconds.");
注意:这两个操作是分开运行的。我运行上面的那个,进程结束,我的意思是实际上结束了,而不是我运行下面的那个。
File[] files = new File("C:\\Users\\SAMSUNG\\Desktop\\img\\").listFiles();
time = System.currentTimeMillis();
for (File f:files){
BufferedImage bimg = ImageIO.read(f);
}
System.out.println((System.currentTimeMillis() - time) + " miliseconds.");
我知道在运行中运行这些文件可能会影响结果,因为我尝试访问相同的文件,因为我单独运行它们。结果将近40分钟。但是,BufferedImage
初始化总是比 Image
初始化快一分钟。这是为什么?
我运行了 3 次测试,结果都是一样的。
最佳答案
时间应该相同。我怀疑您的第一个循环正在使用文件内容预热一些缓存,而第二个循环则更容易一些。
尝试颠倒阅读顺序:首先是 BufferedImages
,然后是 Images
,然后检查会发生什么
关于java - 为什么 BufferedImage 的初始化速度比 Image 快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16234014/