Vin*_*oye 2 java performance image hashtable put
我需要去做 :
Dictionary cache;
cache = new Hashtable();
this.getDocument().putProperty("imageCache", cache);
Run Code Online (Sandbox Code Playgroud)
然后我有一个方法:
cache.put(url, picture);
Run Code Online (Sandbox Code Playgroud)
其中picture是一个Image对象.我这样创造:
public Image getSmiley(String smileyName) {
BufferedImage img = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB);
Graphics g = img.getGraphics();
ImageIcon myicon = new ImageIcon(getClass().getResource("/ola/smileys/" + smileyName + ".png"));
myicon.paintIcon(null, g, 0, 0);
return img;
}
Run Code Online (Sandbox Code Playgroud)
我已经运行了一个分析,我已经看到,当我将这个方法称为"put"时,应用程序的运行速度令人难以置信.可能是什么原因 ?
非常感谢你.
最好的祝福
我怀疑这可能是由于您使用URL类作为键类型.
在javadoc中的URL.equals(Object)这样说:
如果两个URL对象具有相同的协议,引用等效主机,主机上具有相同的端口号,以及文件的相同文件和片段,则它们是相等的.
如果两个主机名都可以解析为相同的IP地址,则认为两个主机是等效的.否则,如果无法解析任何一个主机名,则主机名必须相等而不考虑大小写; 或两个主机名都等于null.
由于主机比较需要名称解析,因此此操作是阻止操作.
当您将一个URL实例用作映射中的键时,每次将一个键与另一个键进行比较时,您可能会触发DNS查找...这可能需要很长时间.
如果这是您的问题,那么您需要将地图的密钥类型更改为String或URI......或其他没有昂贵equals(Object)方法的内容.
| 归档时间: |
|
| 查看次数: |
953 次 |
| 最近记录: |