及早求值

一种求值策略

及早求值(英語:Eager evaluation)又譯熱切求值,也被稱為貪婪求值Greedy evaluation),是多數傳統程式語言求值策略

在及早求值中,表達式在它被約束到變量的時候就立即求值。這在簡單程式語言中作為低層策略是更有效率的,因為不需要建造和管理表示未求值的表達式的中介數據結構

及早求值的優點在於節省內存和提高執行速度,比如下面的 Basic 代碼:

x = 5 + 3 * (1 + 5 ^ 2)
print x
print x + 2

因為第一行代碼 x = 5 + 3 * (1 + 5 ^ 2) 執行完成後 x 被賦值並存儲為 83,表達式所佔用的空間可以立即釋放掉,所以節省了內存空間。接下來的兩行代碼執行時都需要使用 x 的值,此時 x 是可以直接用於運算的數值 83 而不是需要計算的表達式 5 + 3 * (1 + 5 ^ 2),所以減少了一次計算過程,提高了執行效率。對於惰性求值的程式語言,由於記憶化(memoization)特性,求值過程與之不同。

參見