Можно ли профилировать встроенные функции JavaScript с помощью Firebug? - PullRequest
2 голосов
/ 24 марта 2011

Я строю графический сайт с интенсивным использованием HTML5, который интенсивно использует функцию drawImage () контекста холста. В IE9 в Windows 7 производительность плавная, но в Firefox 4 все меняется. Я пытаюсь локализовать узкие места, чтобы начать оптимизацию.

Если я использую функцию профилирования производительности JavaScript в Firebug 1.7.0, я могу видеть статистику для своих собственных функций, но я также хотел бы видеть вызовы встроенных функций JavaScript. Есть ли способ сделать это в Firebug или другом инструменте?

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

Обновление : Оглядываясь назад на этот вопрос, мне приходит в голову, что рассматриваемые встроенные функции на самом деле не функции JavaScript, а функции, предоставляемые хостом. В данном случае это объекты DOM из браузера. Просто подумал, что проясню эту техническую деталь.

Ответы [ 3 ]

2 голосов
/ 24 марта 2011

Последний раз, когда я его использовал, Firebug не дает вам возможности профилировать собственный код.

Что вы можете сделать, так это создать собственную функцию, которая просто вызывает ту нативную часть, которую вы хотите вызвать. Как в свою очередь код:

ctx.fillRect(50,50,50,50);`

В

// wrap in function
function fillR() {
ctx.fillRect(50,50,50,50);
};

// call it immediately afterwards
fillR();

Тогда вы можете получить статистику для fillR. Не лучшее решение, но оно может быть достаточно полезным.

1 голос
/ 26 марта 2011

Обдумав это в течение нескольких дней, я придумал новое решение и написал в блоге об этом:

http://andrewtwest.com/2011/03/26/profiling-built-in-javascript-functions-with-firebug/

Этот метод выполняет следующие действия:

  1. Проверяет, есть ли консоль Firebug открыт.
  2. Есть ли комбинация переопределения и обёртывание нативных функций пользовательские функции.

Эти объединенные шаги позволяют профилировать функции DOM, которые не влияют на исходный код сценария, если вы не выполняете отладку.

1 голос
/ 24 марта 2011

Вы можете попробовать поиграть с Venkman, отладчиком JS Mozilla. На данный момент версия на addons.mozilla.org не работает в Firefox 4.0.

Вы можете получить самую последнюю версию через Mercurial, которая работает с Firefox 4.0:

hg clone http://hg.mozilla.org/venkman/
cd venkman/xpi
./makexpi.py
firefox venkman-0.9.88.1.xpi
...