java - 为什么 BufferedImage 的初始化速度比 Image 快

标签 java image bufferedimage

我正在为我用 Java 编写的项目运行一些关于图像的测试。我得到了一个有趣的结果,但不知道为什么。这是 BufferedImageImage 的初始化行。

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/

相关文章:

java - 数据库中添加NULL

algorithm - 计算二值图像中对象的长度 - 算法

java - 将父对象转换为子对象 - BufferedImage 对象

java - 跨 Activity 发送整数显示 0

java - Maven WAR 项目中静态文件的首选文件位置

java - 重写 Android 函数以启动 Activity 而不是显示文本

java - 如何将图像绘制到 JPanel 或 JFrame?

jquery - jCrop:处理不同的图像尺寸

python - 导入错误 : No module named bs4 in Windows

Java 模板匹配越界