Hallo Leute,
ich habe da ein kleines Performance Problem mit Java. Ich habe ein Programm gebaut, dass eine Vorschaufunktion von Bildern macht. Das Programm bekommt über eine XML Datei vom Server eine Liste mit URLs, liest diese ein, erstellt die Thumbnails der Bilder - sofern diese noch nicht vorhanden sind - und zeigt die Bilder in einer JList. Hier ist der Quelltext, der extrem langsam läuft:
Besonders unter Windows ist die Performance unter aller Sau, auch dann, wenn nicht vom Online Server geladen wird, sondern aus dem lokalen cache der Festplatte mit ImageIO.read(CacheFile);
Kann mir jemand von euch sagen, woran das liegen kann und was ich anders machen muss, damit alles schneller läuft?
ich habe da ein kleines Performance Problem mit Java. Ich habe ein Programm gebaut, dass eine Vorschaufunktion von Bildern macht. Das Programm bekommt über eine XML Datei vom Server eine Liste mit URLs, liest diese ein, erstellt die Thumbnails der Bilder - sofern diese noch nicht vorhanden sind - und zeigt die Bilder in einer JList. Hier ist der Quelltext, der extrem langsam läuft:
Code:
ImgData[] images;
images = new ImgData[URLlist.size()];
for(int i=0;i<URLlist.size();i++){
images[i]= new ImgData(Tools.imgCache(URLlist.get(i).URL),URLlist.get(i).Filename);
}
public static BufferedImage imgCache(String address){
BufferedImage thumbImage=null;
try{
URL url;
url = new URL(address);
String encURL=URLEncoder.encode(address, "UTF-8");
String CacheDir="cache/";
File CDir = new File(CacheDir);
String Location=CacheDir+encURL;
if (CDir.isDirectory()) {
File CacheFile = new File(Location);
if(CacheFile.isFile()){
//Tools.MessageBox("bla");
return ImageIO.read(CacheFile);
}else{
BufferedImage img = Tools.Thumb(address);
Tools.SaveThumbImg(Location, img);
return img;
}
}else{
CDir.mkdir();
BufferedImage img = Tools.Thumb(address);
Tools.SaveThumbImg(Location, img);
return img;
}
} catch(Exception e){
e.printStackTrace();
}
return thumbImage;
}
Besonders unter Windows ist die Performance unter aller Sau, auch dann, wenn nicht vom Online Server geladen wird, sondern aus dem lokalen cache der Festplatte mit ImageIO.read(CacheFile);
Kann mir jemand von euch sagen, woran das liegen kann und was ich anders machen muss, damit alles schneller läuft?