2010-12-22 36 views
3

我目前正在研究一個工具,該工具允許我們在一個大的as3/Air項目(超過2000個類)中查看這個功能是否耗費時間來識別需要優化的瓶頸和功能。As3 swf字節碼注入

實現此目的的一種方法是使用Flash Builder Profiler,但速度非常慢,在1或2分鐘後會崩潰。 另一種方法是用最重要的功能耗時信息手動編寫文件。 但是這是一個手動過程,我無法涵蓋所有​​項目的功能。

所以我正在尋找一種方法來直接在編譯後的swf中注入as3字節碼。有了這樣的工具,我會在每次函數調用後注入一個日誌,所以我將能夠涵蓋所有項目的功能。

一些as3庫存在做這樣的事情(AS3Commons ByteCode),但不能正常工作與我的項目(我得到解析錯誤)和as3是緩慢的。

回答

10

我看到四個選項:

  • 首先,我想的Apparat,通過JOA艾伯特(謝謝,夥計),其中提供的工具ABC字節代碼優化,以及作爲一個非常深刻的API這個字節碼的操作。它是用Scala編寫的,所以這也是學習這種令人敬畏的語言的好時機。

  • 此外,你可以寫你自己的工具。 ABC(ActionScript字節碼)格式爲well documented,以及其容器SWF file format。解析這兩個文件以獲取有趣的標籤並在字節碼中添加所需的指令可能並不難。

  • 在一個更「簡單」的方法上,我們大多數人使用的SWF和ABC編譯器是開放源代碼的mxmlc。你可以嘗試直接編輯編譯器代碼來做你想做的事情。你需要的一切都在Adobe OpenSource Flex SDK web site

  • 作爲您的問題的替代答案,您可以使用毫米級的AS3Trace/AS3DynamicProfile選項,而不是嘗試在SWF中注入字節碼(它始終影響全局應用程序的性能) .cfg,爲每個函數執行完整的日誌,以及分析關於操作碼執行的信息。更多關於那here

總之,這樣的外部分析工具將是一個真棒應用程序是開源的,向社會發布,因爲越來越多的「大」 AS3項目來了這些天。 ;)

+0

此外這種方法:http://stackoverflow.com/questions/357825/flash-actionscript-cpu-profiler – 2010-12-22 15:18:23