這兩天將[url=http:www.meteortl.org]meteortl[/url]的表示式歸約演算法優化了一下,對常量計算提前到解釋期,這樣可以避免在執行期重複計算,提高效能,以及減小表示式樹的大小。
如:coins + 2 * 3 * 4 被優化成 coins + 24,
2 + 3 + 4 + coins 被優化成 5 + coins,
但 coins + 2 + 3 + 4 的處理較麻煩,
因為操作符的優先順序相同,並且是從左至右的結合律,歸約成樹時,coins與2組合成乙個節點後,再與3組合,再與4組合,這樣很難判斷其為常量計算。
可能要改變中綴表示式的優先順序演算法,當為常量時,優先順序加高。
待考慮。
btw: 在任何**中寫表示式,都應該盡可能將常量寫在前面,便於編譯器優化。
正規表示式優化
正規表示式的優化 在jeffrey e.f.friedl 的 精通正規表示式 中提到了幾種技巧。今天著重說一種比較實用的。比較簡單的 在類似 或者 s s 中匹配的時候,量詞 預設是貪婪的,啟用最大匹配模式,會匹配到盡量多的字串,如果我們的需求是匹配text中的text,這樣就不適用了。具體來說,我...
正規表示式優化
正規表示式的優化 在jeffrey e.f.friedl 的 精通正規表示式 中提到了幾種技巧。今天著重說一種比較實用的。比較簡單的 在類似 或者 s s 中匹配的時候,量詞 預設是貪婪的,啟用最大匹配模式,會匹配到盡量多的字串,如果我們的需求是匹配text中的text,這樣就不適用了。具體來說,我...
演算法 表示式求值
今天在網上看到dijkstra的雙棧算術表示式求值演算法,以前很早的時候知道通過算術棧和數值棧搞定的,這次用oc通過陣列實現了預期的效果.原理參考網上,原作者不詳 程式語言系統一般都內建了對算術表示式的處理,我們可以簡易的模仿一下算術表示式處理機制,思想不變,主要是實現方式略有不同。算術表示式可能是...