이미지에 대해 Java로 작성된 프로젝트에 대한 테스트를 일부 실행하고 있습니다. 나는 흥미로운 결과를 얻었고 그 이유를 알 수 없다. 다음은 초기화 라인이 BufferedImage
과 Image
입니다.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.");
는을 조심 :이 두 작업은 개별적으로 실행됩니다. 나는 위의 하나를 실행하고, 프로세스가 끝나고, 나는 실제로 아래쪽을 실행하는 것보다 죽은 끝을 얻는다는 것을 의미한다.
실행 중에 이러한 파일을 실행하면 동일한 파일에 접근하려고 시도 할 때 결과에 영향을 미칠 수 있습니다. 결과는 40 분 가까이 있습니다. 그러나 BufferedImage
초기화는 항상 Image
초기화보다 빠릅니다. 왜 그런가요?
테스트를 세 번 실행하면 결과가 동일합니다.
이것은 유효한 테스트는 아니며 동일한 메소드를 호출하지만 다른 유형으로 할당하는 것입니다. –
또한 첫 번째 루프가 두 번째 루프가 활용하고있는 이미지 결과를 캐시하고 있음을 알 수 있습니다 (이미지를 다시 읽을 필요가 없음). – MadProgrammer
초기화에는 차이가 없습니다. 차이점은'ImageIO.red (f)'의 결과를 할당 한 참조 유형입니다. 그 이유는 iluxa에 의해 주어졌습니다 : 두 번째 루프가 실행될 때, 핫스팟은 이미 코드를 최적화 할 기회를 가졌습니다. – Axel