Подтвердить что ты не робот

Как профилировать и получить производительность Javascript

Возможный дубликат:
Каков наилучший способ профилировать выполнение JavaScript?

У меня есть несколько сценариев, использующих jQuery, и я думаю, что у меня утечка памяти в одном из них.

Как можно профилировать и найти, какие части скриптов, которые у меня есть, используют больше всего памяти/процессора?

4b9b3361

Ответ 1

Что касается потребления памяти

Утечки памяти в JavaScript обычно игнорируются, за исключением случаев, когда они переходят в утечку памяти браузера (то есть даже после того, как пользователь переходит от страницы, память продолжает выделяться, и нет возможности ее освободить). Причина этого в том, что, хотя ваше веб-приложение может иметь некоторые утечки памяти, пользователи перейдут с одной страницы на другую, чтобы утечки были сведены к минимуму. Однако они не могут перезапустить браузер, поэтому утечки памяти браузера могут быть серьезными. Известно, что некоторые JavaScript-коды вызывают утечку памяти в определенных браузерах, поскольку Internet Explorer, вероятно, является наихудшим в этой области. Для этого вы можете найти Microsoft JavaScript Memory Leak Detector, чтобы быть очень полезным.

Что касается времени

IE, Chrome и Safari встроены в профилографы в средствах веб-разработки, которые поставляются с браузером. Для Firefox вы можете использовать Firebug. Также полезно, поскольку вы используете jQuery, что означает, что ваш отчет о профилировании будет заполнен анонимными функциями и аналогичным, делая его совершенно нечитаемым, Плагин профилирования jQuery Джона Резига, что даст вам более четкое представление по этому вопросу.

Ответ 2

Используйте Firebug. Цитировать из http://getfirebug.com/js.html:

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

Ответ 3

Я бы предложил взглянуть на профилировщика в Firebug, а Drip для IE, чтобы помочь найти утечки памяти.

Кроме того, имейте в виду, что большинство утечек памяти javascript происходят из круговых ссылок между объектами DOM и объектами javascript, которые не разбиваются при выгрузке объекта DOM. Чтобы этого избежать, я предлагаю избегать создания ссылок на объекты javascript в свойствах объекта DOM (т.е. Избегать чего-то вроде document.getElementById('foo').bar = myObject;). Если вы должны создать эти циклические ссылки, обязательно разблокируйте их самостоятельно в функции, которая запускается при выгрузке страницы или при удалении объектов DOM до выгрузки.

Ответ 4

В Google Chrome также есть параметры профиля

Ответ 5

Еще один простой способ протестировать конкретный фрагмент кода - добавить к нему таймер.

var testStart = new Date();

// code to be tested here

$('#jstest').html("selected function: "+ (new Date() - testStart) + " milliseconds");

Где jstest - элемент span, который отображается на вашей странице.

Ответ 6

Хотя хром имеет встроенные параметры профилирования, он не дает точной информации об объекте. Поэтому я предпочитаю использовать инструмент поиска утечек для javascript, который помог мне в моем коде.

https://code.google.com/p/leak-finder-for-javascript/

Надеюсь, это поможет.

Ответ 7

Firebug или Google Page Speed ​​для Firefox имеют инструменты профилирования.