Maybe you find it useful for profiling..
Also see: http://hg.mozilla.org/tamarin-central/file/dab354bc047c/extensions/Trace.as

<canvas debug="true">
<passthrough>
  import flash.trace.Trace;
</passthrough>
<attribute name="traceLog" value="$once{[]}" />
<!--
 Trace.OFF
 Trace.METHODS
 Trace.METHODS_WITH_ARGS
 Trace.METHODS_AND_LINES
 Trace.METHODS_AND_LINES_WITH_ARGS
-->
<attribute name="traceLevel" value="$once{Trace.METHODS_WITH_ARGS}" type="number"/> <method name="traceListener" args="file_name:String, linenum:int, method_name:String, method_args:String">
  if (! (method_name == '' ||
           method_name.indexOf('Array') == 0 ||
           method_name.indexOf('Object') == 0 ||
           method_name.indexOf('Function') == 0 ||
           method_name.indexOf('String') == 0 ||
           method_name.indexOf('Math$') == 0 ||
           method_name.indexOf('global/') == 0 ||
           method_name.indexOf('flash.') == 0 ||
           method_name.indexOf('mx.') == 0)) {
    canvas.traceLog.push(file_name, linenum, method_name, method_args);
  }
</method>
<method name="setTrace" args="on:Boolean">
  if (on) {
    Debug.info("start tracing")
    canvas.traceLog = [];
    Trace.setLevel(canvas.traceLevel, Trace.LISTENER);
    Trace.setListener(canvas.traceListener);
  } else {
    Trace.setListener(null);
    Trace.setLevel(Trace.OFF, Trace.LISTENER);
    Debug.info("done tracing, %d elements", canvas.traceLog.length / 4)
  }
</method>
<method name="dumpTrace" ><![CDATA[
  var log = canvas.traceLog;
  var MAX = Math.min(4*200, log.length);
  var i = 0;
  function dump () {
    var max = Math.min(i + 4*100, MAX);
    for (; i<max; i+=4) {
Debug.write("file=%s, line=%d, method=%s, args=%s", log[i], log[i+1], log[i+2], log[i+3]);
    }
    if (max != MAX) {
      LzTimeKernel.setTimeout(dump, 1);
    } else if (MAX < log.length) {
      Debug.info("omitted %d entries", (log.length - MAX) / 4);
    }
  }
  dump();
]]></method>
<button text="enable" onclick="canvas.setTrace(true)" />
<button x="100" text="disable" onclick="canvas.setTrace(false)" />
<button x="200" text="dump trace" onclick="canvas.dumpTrace()" />
</canvas>

Reply via email to