2

http://www.golfscript.com/golfscript/syntax.htmlGolfScript沒有天生的慢。 (...)可以完成分析以刪除大部分(如果不是全部)堆棧使用。說明?

紅寶石啓動緩慢這麼GolfScript更慢。 GolfScript並沒有天生的慢。除了字符串評估 方法,一切都可以靜態編譯爲C,並可以完成分析 刪除大多數,如果不是所有的堆棧使用。我不打算在 作出更有效的解釋,因爲語言的目的不是 數值分析,但如果任何人覺得創建一個,我會 高興地使用它。

有人可以用簡單的例子來說明什麼是堆棧,這是什麼意思,以消除所有的堆棧使用,以及如何做到這一點?

回答

1

GolfScript是一種基於堆棧的語言。它的行爲類似於RPN calculator。每個內置函數都會消耗一些最高堆棧值,並將其結果推回棧中以供將來操作。如果你想測試一個數字是否小於一個常數,你可以使用.5<這樣的代碼,其中.複製該值(否則它會被消耗掉),然後推動該常量。最後<彈出副本和常量並推回結果。編譯器可以很容易地看到像.X<這樣的模式,並生成跳過中間步驟的代碼(只是在堆棧頂部「比較」並比較)。這將屬於「窺視孔」優化的範疇,它們尋找小的輸出模式並用更有效的模式取代它們。

如果堆棧頂部的值來自複雜(不可預知)的計算,有時候這是不可能的。

相關問題