2011年5月11日 星期三

FlashBuilder Performance Profile view (性能概要文件與方法統計使用)

FlashBuilder效能分析工具中,有一項Performance Profile view可以查詢應用程式中每個method被執行的次數,執行的時間花費,以便讓你追查效能狀況得知哪裡需要優化。

使用範例:
Step1.建立如下測試功能的程式碼
//測試程式碼:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx"
               minWidth="955" minHeight="600"
              >
      <fx:Script>
            <![CDATA[
                  private var _ran:Boolean = true;
                  protected function button1_mouseDownHandler(event:MouseEvent):void
                  {
                     if(_ran)
                     {
                        _ran = false;
                        for (var j:int = 0; j < 100000; j++)
                        {
                          trace(examA4());
                        }
                        _ran = true;
                     }
                  }
                  private var str:String = "http://www.test.yes/index.html";
                  private function examA4():String
                  {
                      var targetIndex:int;
                      targetIndex = str.lastIndexOf("/") + 1;
                      if(targetIndex >= 0 ) {
                          return(str.slice( targetIndex , str.length));
                      }else {
  return null;
                      }
                  }
              ]]>
       </fx:Script>
   <s:Button mouseDown="button1_mouseDownHandler(event)"/>
</s:Application>
Step2.點擊圖示,進入效能分析模式
Step3.點擊正在運行的程式,並點擊捕獲性能概要的圖示







Step4.捕獲文件後,雙擊文件,打開性能概要文件窗口









可以看到窗口內有所有method被執行的訊息,目前Button的mouseDown還未觸發,所以還沒見到examA4()的執行狀況。

Step5.點擊瀏覽器上的Button來觸發執行examA4()
  • examA4()還在跑的時候,可以看見瀏覽器上Button還在被MouseDown的狀態,執行完畢的話Button會回復原狀。
Step6.examA4()執行完成後,再次點擊捕獲性能概要文件
Step7.再次點擊被捕獲的文件,可以看到examA4()被執行狀況的資訊了










如此可以觀察到,examA4()被調用了幾次,占了應用程式中總調用的百分比,發費了多少時間等等。

在這裡只是一個操作範例,一般使用上是拿來追蹤程式中method被調用以及執行效能狀況,以便判斷哪裡需要優化。


FlashBuilder Object References view(對象引用) 使用

Object References View是FlashBuilder分析模式裡的一個功能,用來追蹤物件實體的被參考狀況。

使用範例:
Step1.建立如下資料結構















測試程式中,將會建立hero.mxml 、TestInnerObject.as、TestObject.as三支程式來測試Object References View的使用功能。

FlashBuilder 設置觀察點

FlashBuilder可以在變數視窗中設定觀察點,觀察點在變數數值發生變動時會停止執行。
使用範例如下程式碼:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
  xmlns:s="library://ns.adobe.com/flex/spark"
  xmlns:mx="library://ns.adobe.com/flex/mx"
  minWidth="955" minHeight="600"
  applicationComplete="application1_applicationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
import spark.components.Button;
private var _i:int;
protected function application1_applicationCompleteHandler(event:FlexEvent):void
{
trace("application complete"); //在此下斷點
}
protected function button1_mouseDownHandler(event:MouseEvent):void
{
_i++;
}
]]>
</fx:Script>
<s:Button mouseDown="button1_mouseDownHandler(event)"/>
</s:Application>

Step1.在程式中第14行下斷點,如下圖。














Step2.執行除錯模式
按下進入除錯模式,此時系統會停在斷點。

Step3.於變量view中,找到變數_i,在_i上按下滑鼠右鍵選擇切換觀察點










設定完成_i上面會出現鉛筆圖示如

Step4.按下F8讓程序繼續
Step5.於瀏覽器上按下Button改變_i數值
你會發現FlashBuilder會停止在程式第19行(_i++下面),打開斷點你可以看到







其實觀察點就是當你要觀察的變數的數值有改變時,就會停止在變數變動那一行,以便觀察變數數值。

與斷點不同是:
  • 斷點是程序執行到一定會暫停。
  • 觀察點是只有變數改變才會暫停。
  • 斷點在離開除錯模式後並不會消失。
  • 觀察點在終止除錯模式後就會自動消失。