優化我有一個計劃功能誰的基本形式是這樣的我怎麼能知道我的尾遞歸方案功能被正確
(define (foo param var)
(cond ((end-condition) (return-something))
((other-end-condit) (return-something-else))
(else
(let ((newvar (if some-condition
(make-some-updated var)
(destructive-update! var))))
(foo param newvar)))))
我覺得這是很清楚的東西,需要進行優化,以迭代編譯,但是當我編譯它(用雞)它仍然運行得非常慢。 (如果我理解R5RS規格:http://groups.csail.mit.edu/mac/ftpdir/scheme-reports/r5rs-html.old/r5rs_22.html,看起來應該是這樣)
我在python中編寫了一個while循環的精確算法,解釋程序在幾秒鐘內終止。我的編譯計劃大約需要15分鐘,我確信這個算法是一樣的。
我認爲這是一個尾部遞歸沒有得到優化的問題,因爲我想不出還有什麼可能,但我無法弄清楚。有任何想法嗎?對於它的價值,var是一個散列,破壞性更新僅僅是添加一個元素,儘管它也返回更新後的散列作爲newvar傳入。
它可能是你的代碼的其他部分有一個隱藏的緩慢,但我也會嘗試不同的Scheme實現:Gambit和Bigloo是值得嘗試的兩個編譯器。 – erjiang 2010-11-18 03:33:51
我可能會這樣做,謝謝 – 2010-11-18 04:34:47