我在Javascript中做了很多遞歸,爲了防止堆棧溢出,我一直在使用setTimeout。下面是一個簡單的理論例子:使用setTimeout的間隔小於1
go(){
setTimeout(function(){
x++;
go();
},1);
}
我也有一個功能記錄x
以每隔幾秒鐘控制檯,但這不是問題。我所看到的是,無論我在超時時間內輸入什麼值,在示例中使用了1,腳本每秒只能運行1000次。我正在做上億的遞歸,所以這個速度不夠快。當我將超時值設置爲0,或.1或1/10時,我仍然只能獲得每秒約1000次的時間。我試過使用32位和64位瀏覽器(Chrome和Firefox)無濟於事。
我該如何加快速度?而且,我在這方面都比較新,所以如果解決方案很簡單,那將會很棒。
哦,忘了提及:如果我完全刪除setTimeout,則每次都溢出堆棧。
感謝您的幫助!
我不知道爲什麼你在客戶端瀏覽器做這樣的重操作。如果你能找到一種方法在你的服務器上運行它,它會更好。 – 2013-03-10 00:13:12
我不確定我是否理解;如果您使用setTimeout來防止堆棧溢出,那麼您一定不需要遞歸。那麼,爲什麼你需要setTimeout?遞歸速度較慢只會延遲溢出。 – 2013-03-10 00:14:27
你在做什麼看起來不太合適 – adarsh 2013-03-10 00:20:26