В каждом столбце есть описание того, что это значит, если вы наведите курсор мыши на него в Firebug. Я предполагаю, что вы можете прочитать о том, как каждый столбец работает самостоятельно. Тем не менее, вы определенно столкнулись с каким-то странным поведением, которое необходимо объяснить.
собственное время - это количество времени, которое функция потратила на выполнение кода внутри себя. Если функция не вызывает никаких других функций, то собственное время должно совпадать с время . Однако, если есть вызовы вложенных функций, то время также подсчитывает время, потраченное на их выполнение. Следовательно, время почти всегда будет больше, чем собственное время , и в большинстве случаев будет превышать общее время, указанное профилировщиком.
Тем не менее, одна функция время не должна превышать общее время регистрации профилировщика для вызовов JavaScript. Эта проблема определенно является ошибкой, и я понимаю, почему у вас возникают проблемы с доверием Firebug, когда он дает такой парадоксальный результат. Мне кажется, я нашел причину возникновения этой ошибки: AJAX.
Похоже, что вызовы AJAX приводят к тому, что столбцы, в которых учитываются вложенные вызовы функций, сообщают неверную информацию. В итоге они подсчитывают время выполнения JavaScript и запроса к серверу.
Эту ошибку профилировщика можно воспроизвести, выполнив следующие действия:
- Перейдите на любой сайт, который использует AJAX. (Я использовал
http://juicystudio.com/experiments/ajax/index.php)
- Включить отладку консоли / скрипта.
- Включите профилировщик.
- Сделайте AJAX-вызов. (Несколько могут осветить проблему больше.)
- Остановите профилировщик, проверьте вывод.
В этом примере, что касается времени против собственного времени , собственного времени каждой функции складывается из общего времени профилировщика, но * В столбце 1048 * time указывается время, затраченное AJAX-вызовом на соединение с сервером. Это означает, что столбец time неверен, если вам нужна только скорость выполнения JavaScript.
Это становится хуже: так как время , среднее время , мин и макс все подсчитывают вызовы вложенных функций, они все неверно, если вы используете AJAX. Кроме того, любая функция, которая в конечном итоге использует AJAX (при вызове вложенной функции), также будет сообщать неверное время. Это означает, что целый ряд функций может сообщать неверную информацию! Так что пока не доверяйте ни одному из этих столбцов, пока Firebug не решит проблему. (Возможно, они предполагали, что поведение будет таким, хотя в лучшем случае сбивает с толку, если оставить это так.)
Если вы не используете AJAX, возникает другая проблема; дайте нам знать, если вы или нет.