
Adobe
雖然 Macromedia Flash Player 8 可能不如 alpha 視訊或下垂式陰影濾鏡特效那麼吸引人, 但是它卻是您不做任何事, 就能立即受惠的功能。整體效能提升的最大功臣之一, 就是全新的廢棄項目收集架構。它改善了 ActionScript 執行, 並減少了播放器的記憶體使用量。
此外, Flash Player 8 針對 Macintosh 平台所做的幾項改變, 讓 Windows 和 Macintosh 的效能更接近。在做了這些變更之後, 當檢視內容和應用程式時, Flash Player 8 的整體效能可提升高達 50%。
Flash Player 8 的全新廢棄項目收集器, 是提高 ActionScript 執行效能及減少記憶體使用量的主要因素。隨著 Flash 應用程式的大小和複雜性增加, Flash Player 7 中用於廢棄項目收集的參照計算演算法開始出現其侷限性。藉由從簡單參照計算改用延遲參照計算, 我們減少了 Flash Player 中, 超過 90% 的參照計算。
之前, Flash Player 7 中的參照計算約占了總執行時間的 20%, 這通常會導致轉換大型應用程式暫停。而全新的廢棄項目收集器可將此時間降低為僅占總執行時間的 1–2%!
此外, Flash Player 8 也使用漸進式廢棄項目收集, 將執行運作分為將物件標記為刪除和實際刪除步驟, 如此就可等到有可用的週期時再執行。
由於有效率的廢棄項目收集和記憶體使用量有直接相關, Flash Player 8 使用的記憶體量比 Flash Player 7 少了約 50%。Flash Player 7 採用的廢棄項目收集方式, 導致記憶體的使用呈現近乎線性形式。相反地, 使用漸進式廢棄項目收集, Flash Player 8 的記憶體使用量更像是步進函數, 因為在記憶體釋放週期中, 會定期釋放記憶體區塊(請參閱圖 1)。
圖 1.在通過範例測試期間, Windows 記憶體的使用圖
在 Mac OS X 上進行相同的測試時, 執行的廢棄項目收集會略有不同:Flash Player 大部份到最後才會釋放記憶體(請參見圖 2))
圖 2.在通過範例測試期間, Mac OS 記憶體的使用圖
由於有了新的廢棄項目收集器加上記憶體耗用量較低, 您大部份的現有內容在 Flash Player 8 上執行時, 速度就會大幅提高 - 而不需重新編譯。
雖然內容和應用程式的整體效能可以獲得改善, 但是新的廢棄項目收集器卻有降低特定方面效能的副作用。有些操作會變得比較快, 但是有的會變得比在 Flash Player 7 時還慢。這是因為支援記憶體管理的基礎架構已經改變。因此, 評估特定功能性的微型測試程式 (microbenchmark) 測試或小型基準測試, 無法用來對舊版播放器和 Flash Player 8 做真正公平的比較。
例如, 假設您有一個可計算方程式來執行一些數學常式的微型測試程式, 而您要在播放器中連續執行 5 次。在 Flash Player 7 中計算需要 300 毫秒。在每次後續執行中, 個別測試的執行時間也需要 300 毫秒。但是使用 Flash Player 8 的廢棄項目收集, 第一次執行相同的微型測試程式需要 310 毫秒, 下次執行時所需的時間為 300 毫秒, 依此類推。其第一次執行時間會比 Flash Player 7 慢, 但是後續的執行則會越來越快, 因此整體平均時間會比 Flash Player 7 快。
請參見本文最後的範例 Flash Player 微型測試程式測試和結果集。效能的主要目標, 是要改善整體應用程式效能, 而不一定要改善個別微型測試程式的效能。當我們在檢查是否不會將所做的變更設回原值時, 微型測試程式測試就十分有用, 但更值得注意的是, 我們也會在我們的測試套件中加入參考應用程式基準, 以便更完善地測試整體效能受影響的情況。
在這個版本中, 我們投注了大量的時間和心力在提高 Mac 播放器效能上, 讓 Windows 和 Mac OS 各方面的效能更接近, 另外還可提高穩定性。另外一個大改變, 是重新編寫 Mac 外掛程式, 以使用新的 "Mach-O" OS X 執行時期架構, 讓播放器直接運用平台的新技術和功能。我們也投入許多時間最佳化 Mac 專用的核心轉換常式。
為改善視訊和大量內容的播放效能, 並降低 CPU 使用量, 當 Flash Player 8 在 Safari on Mac OS X 10.2 和更新版本上執行時, 會採用部份 OpenGL 功能。這不會完整支援 OpenGL;播放器會運用特定功能, 以便更快地在畫面上擷取位元。使用 OpenGL 來改善視訊播放和動畫, 並減少撕裂線或水平重繪線。
和廢棄項目收集類似, 這項功能雖然可改善在 Safari 中轉換時的整體效能, 但是, 在某些情況下, 效能卻可能會降低。OpenGL 也有一些內建限制, 在舊版、執行速度較慢的系統上, Mac OS X 會將畫格速率上限設為每秒 30 個畫格。為何只限於 Safari?此項功能會要求瀏覽器, 當使用者建立新的標籤或交換標籤時通知播放器。目前本版 Safari 是可支援此項功能的唯一 Mac 瀏覽器版本。
以下為範例 Flash Player 微型測試程式測試和結果, 說明 Macromedia 在播放器開發期間執行的效能測試類型:
我們使用下列參考機器:
當然, 本文中並未完整列出影響特定播放器功能的效能增強性能。有許多都是針對內部的改變和最佳化調整, 例如改變基礎內部資料架構, 以減少記憶體的使用量, 或使用浮點矩陣, 來提高轉換的精確度。有些增強功能可讓特定功能變得更快速, 但是可能會降低某些功能, 以支援新增的酷炫功能。就整體來看, Flash Player 8 的效能功能和最佳化調整的整體特效可為您的內容和應用程式, 提供更流暢、更快速的體驗。
若要進一步了解 Flash Player, 請造訪 Flash Player 開發人員中心*。
若要進一步了解 Flash Player 8 功能, 請造訪 Flash Player 功能* 網頁。
Emmy Huang 是 Flash Player 的資深產品經理。她的資歷包括分別在 Sony Pictures Digital、Liberate Technologies 和 Intel 等公司中, 針對廣泛的數位娛樂技術, 從事工程和產品管理。她在 UCLA 攻讀 MBA 時, 曾有一小段時期考慮轉換工作跑道, 但後來還是決定從事軟體銷售, 因為她認為這比銷售漂白劑更有趣。