2013-04-02 5 views
1

나는 더 나은 퍼포먼스가 필요한 오래된 자바 애플릿을 가지고있다.getImage() performance

내가의 충당 사용이와

getToolkit().getImage(imageURL) 

내 문제 것은 다음과 같습니다

  1. 그것은 이미지 하나 하나를로드

  2. 요청을 평행하지 않습니다 솔기있는 모든 http keep-alive 플래그는 각 이미지에 대해 새로운 tcp 연결을 엽니 다. 그리고 연결을 닫지 마십시오.

http keepalive 기능을 사용하여 이미지를 병렬 처리하는 솔루션이 있습니까?

public class test 
{ 
    Map<String, URL> urlList = new HashMap<String, URL>(); 
    urlList.put("test", "/test.jpg"); 
    urlList.put("grrr", "/grrr.jpg");  
    urlList.put("htutz", "/htutz.jpg"); 
    urlList.put("fsdfgf", "/fsdfgf.jpg"); 
    urlList.put("fdgsfd", "/fdgsfd.jpg"); 
    urlList.put("fdgtzt", "/fdgtzt.jpg"); 
    urlList.put("reterg", "/reterg.jpg"); 
    urlList.put("ssdfsfdgsfd", "/ssdfsfdgsfd.jpg"); 

    for (URL imageUrl: urlList) { 
    { 
     new ImageExample(imageUrl); 
    } 
} 


public class ImageExample extends JApplet { 
    Image image; 

    public void ImageExample(URL imageUrl) { 
     image = getToolkit().getImage(imageUrl); 
    } 

    public void paint(Graphics g) { 
     g.drawImage(image, 20, 20, this); 
    } 

    @Override 
    public void draw(Graphics g) 
    { 
     paint(g); 
    } 
} 
+1

어떻게 당신이 "평행하지 않은"방법으로 이미지 읽기 제안 않습니다 (캐시를 사용하지 않습니다 때문에)? 이것은 물리적으로 어떻게 가능한가? 프로그램은 필요할 때마다 이미지를 다시 읽습니까? 그렇다면 이미지가 충분히 작 으면 한 가지 가능한 개선점은 이미지를 메모리에 유지하고 이미지를 다시 읽지 않고 다시 사용하는 것입니다. 그러나 프로그램에 대해 더 많이 알지 못하면 특정 rec를 제공하기가 어렵습니다. –

+0

이미지를 평행하게 처리하는 것이 좋지만 이미지는 연속으로로드됩니다. 새로운 예를 보아라. 목표는 가능한 한 빨리 처리하는 것입니다. – GreenRover

답변

1

각 이미지를로드하고 이미지가로드 될 때를 종료 할 새 스레드를 만듭니다

짧은 예는 응용 프로그램 작업을 HWO.

이렇게하면 모든 이미지를 동시에로드하고 더 이상 이미지를 이미지로로드하지 않습니다. (그리고 또한 당신이 차단하지 않습니다 UI 스레드)