我有這個計劃的地方也有類似的這種有些遞歸函數:的Java創建一套新的太慢
public static void lambda(HashSet<Integer> s){
if(end(s)){
return;
}
for(int i=0;i<w;i++){
HashSet<Integer> p = (HashSet) s.clone();
p.addAll(get_next_set());
do_stuff_to(p);
lambda(p);
}
}
我在做什麼是美利堅合衆國的每與集合S設置。並在每個聯盟上運行lambda。 我運行一個分析器,發現c.clone()操作佔用了我代碼的100%的時間。有什麼方法可以大大加快速度?
「我的代碼100%的時間」。真?你確定測量包括get_next_set和do_stuff_to嗎?這些100%代表多少個鐘錶秒鐘?您的需求真的太慢嗎? – Thilo 2010-03-29 02:01:06
也.clone()可能不是最好的方式來做到這一點,它幾乎可以保證沒有做你認爲它正在做的事情。提示:它實際上並沒有製作集合中對象的副本,只有引用的副本。 – 2010-03-29 15:29:56