2012-01-23 97 views
2

我的問題很簡單:
問:getset功能有比較標準的功能被內聯的機會增加?get/set函數和內聯

如果是這樣,是否有任何東西阻止我將它們用於除預定用途之外的其他用途? (除了我的代碼變得不那麼可讀)。

+1

內聯在語義上應該是透明的。這是否回答你問題的第二部分? (您是否嘗試使用它們來嘗試插入內容?) – Cameron

+0

據我所知,函數內聯完全不受AS3支持 - 是否有某些我錯過了?不過,[HaXe](http://haxe.org)支持(非常好)內聯。 – Cameron

回答

2

據我所知,Flash很少內聯任何東西。我幾乎是積極的,它甚至不會出現在getter和setter中,因爲你仍然可以通過反射來獲得它們(這對於內聯定義來說應該是不可能的)。我肯定不會使用它們來提高性能。如果您真的想要獲得這些收益,那麼可以使用haXe,因爲您可以使用它運行Flash運行時,實現真正的內聯函數定義。 希望這有助於!

+0

據我所知,閃存有一個JIT編譯器,它確實可以內聯函數。 (類似於Java的JIT) – Acidic

1

我不知道這是肯定的,但我希望答案是否定的。閃存中的許多元素都是動態的,閃存編譯器因不進行字節碼優化而臭名昭着。

實際上我知道使用getters,setter比使用函數調用要慢,而且函數調用比直接訪問公共變量要慢。

如果你想在actionscript中內聯函數,最好的做法是可怕的:複製dang代碼。 顯然,這是所有錯誤都算出來後的最後一個階段。

編輯: Joa ebert有一個開源的字節碼優化器,可以對Adobe編譯的swfs進行很多改進。 https://github.com/joa/apparat 在那裏閱讀。在Readme中滾動查看工具。你想要的就是TDSI - TurboDeiselSportInjection。那名字怎麼樣?

+0

JIT編譯器怎麼樣? – Acidic