2014-01-29 1 views
0

Скажем, у меня есть функция OfInterest, вызывается функциями А и В, и что вызывает функцию X и Y. Я ищу способ просмотра:javascript профилирование: способ отображения сверху вниз дерева для отдельной функции?

OfInterest -- 200 ms total time 
    X -- 150 ms total time 
    Y -- 50 ms total time 

... таким образом, что она включает в себя как звонки в OfInterest по A и B.

В профайлером Chrome это будет вид сверху вниз, увеличенный на OfInterest, за исключением того, что AFAIK не может включать вызовы OfInterest от обоих A + B одновременно , Восходящий взгляд получает правильное общее время для OfInterest, но AFAIK не может видеть X + Y в этом представлении.

Есть ли способ заставить Хром выплюнуть это или использовать другой профайлер, такой как Firebug, чтобы это увидеть?

ответ

0

Этого GitHub проект дает сверху вниз дерево для jvascript вызова стата

https://github.com/brucespang/jsprof

Когда я искал яваскрипт профилировщика вызова функции я нашел небольшой скрипт, который я модифицированный согласно моей потребности, этот сценарий очень просто, он покажет статистику всех глобальных функций в этом объекте окна, хотя он не перечисляет имена вызываемых вложенных функций.

функция callLog() {

var functionPool = {} 

for(var func in window) 
{ 

if (typeof(window[func]) === 'function') 

    { 
    functionPool[func] = window[func]; 
    (function(){ 
     var functionName = func; 
     var totalTime= 0; 
     var noOfTimes =0; 
     var minTime= 0; 
     var maxTime =0; 

     window[functionName] = function(){ 
     var args = [].splice.call(arguments,0); 
     var startTime = +new Date;   
     functionPool[functionName].apply(window, args);  
     var duration = new Date - startTime; 

      if (duration> maxTime) 
       maxTime= duration; 
      if (duration< minTime) 
       minTime= duration; 

     totalTime = totalTime + duration; 
     noOfTimes++ ; 
     console.log('Executed: ' + functionName + '('+args.join(',')+')' + " Time[" + duration + "ms]"+" Total Time[" + totalTime +"ms]" +" No of Times[" + noOfTimes + "]" + "max Time [" + maxTime+ "ms]" + "min Time [" +minTime +"ms]");    

     } 
     })(); 
    } 
} 

}

Смежные вопросы