2011-06-10 93 views

回答

11

您是否瞭解從源代碼解釋中涉及的所有階段?只有第一個詞彙分析必須處理空白,而在空白的情況下,「處理」意味着「忽略它」。這個階段只佔總時間的很小一部分,通常使用正則表達式完成,並且幾乎具有線性複雜度。與分析相比,這可能需要長時間的比較。而解釋只是有點可行,因爲這兩個階段(加上第三個字節碼生成,在使用字節碼的實現中)比非平凡程序的實際執行要少得多。

不要擔心這一點。任何人都不會注意到任何差異。老實說,如果你能用time和一個接近沒有實際工作的小程序來衡量差異,我會感到驚訝。

8

性能影響是ε,即大於零的非常小的數字。空間只能被讀取和解析一次,然後Ruby代碼被轉換成中間形式。

+0

空格讀取一次,根本不解析。 – EJP 2013-05-17 00:24:55

+0

廢話。 lexing階段是解析的一部分。 – 2013-05-18 05:29:20

+0

廢話。空間被篩選;結果被掃描;並解析結果。 – EJP 2014-05-04 22:36:11

9

可以肯定的是,解析器在讀取一個字節的標籤縮進與四個字節的空間之間可能會產生的影響將由下一個必須讀取代碼並修復您的選項卡/間隔混亂的人來抵消。

請使用空格。簽名,下一個人讀你的代碼。

+0

阿門,兄弟![](http://stackoverflow.com/questions/646032) – 2011-06-11 05:23:26

相關問題