2011-05-26 62 views
3

我在閱讀有關確定性執行的內容,即對於相同的輸入,您具有相同的輸出。我想知道是否有編譯器作者在運行時考慮過優化確定性函數。例如,採取階乘函數。如果在運行時檢測到它持續被相同的輸入值調用,編譯器可以緩存輸出值,而不是執行階乘函數,可以直接使用該輸出值。看起來像一個很好的研究課題。有沒有關於這個話題的文章或工作?確定性函數的編譯器優化

+0

您似乎誤將此網站誤認爲Google。 – 2011-05-26 21:57:02

回答

4

這通常被稱爲memoization一般會談的問題,並在函數式語言一個相當普遍的優化。

1

它可以做到,但據我所知,編譯器並不常見。問題在於用戶可以按自己喜歡的方式定義多種類型,並以任何他們喜歡的方式定義相同的類型,並且使用堆分配和東西非常非常非常難以證明這樣的事情。基本上,它可以做到,但只有當你的函數涉及直線數值計算時,這很少見,因此它通常不具有高價值。