2014年3月11日 星期二

[AS3][效能] 處理 重繪區域比顯示區域大的一些方法 IV

這一篇主要是因為我看了 blitting 這種做法後

想對我自己的方式做改善所進行的一些測試

首先資料來源如下

1.bitmapdata 的功能測試 

2.利用 blitting 改善 movieclip 的效能(使用 Scout)


我自己測的結果如下

各 30 回ループ

draw :: 3 ms
最低速に比べて約 12500 %高速

copyPixels :: 3 ms
最低速に比べて約 12500 %高速

fillRect :: 6 ms
最低速に比べて約 6250 %高速

clone :: 61 ms
最低速に比べて約 614 %高速

new :: 102 ms
最低速に比べて約 367 %高速

merge :: 105 ms
最低速に比べて約 357 %高速

setPixel :: 225 ms
最低速に比べて約 166 %高速

setVector :: 375 ms
最低速に比べて約 100 %高速

clickで再計算

當然這個僅供參考

因為實際的部分 絕對不如 那個範例所顯示的

但是我自己看重的重點是!

單就 draw 和 copyPixels 的處理速度上!

以這個例子是同一個級別的,

所以就我自己的方法 特別改用 copyPixels  去做!(單對bitmapdata 的部分)

反而會影響效能!

更多的問題會是像下面的 blog 講的

利用 blitting 改善 movieclip 的效能(使用 Scout)

所講的.... 濾鏡 更新大小 等等的東西

那篇文章中的例子會很快 而且快的那樣明顯的原因是~

他只畫一份 然後給其他的使用! 而且是一次貼上一個區塊!

而且 bitmapdata 的更新只更新他畫的那一塊!

並不需要重新的 一塊一塊畫濾鏡的部分

所以越多 理論上是越明顯!

然而在我的 其他三篇中 寫的方式 並沒有辦法使用這個方法來做優化!

如果要做到的加速方式!

我必須去判斷哪一塊有更新 然後就更 新的部分一塊貼圖

就會有優化的效果!

但是就我自己的測試 不明顯!

所以相關的報告就不放上來了

話說這一篇也卡了兩個多月了 orz

沒有留言 :