Как представить и получить производительность JavaScript [дубликат]

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

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

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

26
задан Cœur 15 January 2019 в 15:42
поделиться

7 ответов

, касающиеся расхода памяти

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

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

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

20
ответ дан 28 November 2019 в 07:31
поделиться

Use Firebug. Чтобы процитировать http://getfirebug.com/js.html:

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

10
ответ дан 28 November 2019 в 07:31
поделиться

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

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

4
ответ дан 28 November 2019 в 07:31
поделиться

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

var testStart = new Date();

// code to be tested here

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

Где jstest - элемент диапазона, видимый где-то на вашей странице.

-121--1456246-

Нет, это необходимо сделать в коде. Смотрите этот вопрос.

-121--2568323-

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

2
ответ дан 28 November 2019 в 07:31
поделиться

Этот пост от John Resig (jQuery) может быть полезен для обнаружения утечек памяти в IE:

http://ejohn.org/blog/deep- -Оф-интернет-проводник /

0
ответ дан 28 November 2019 в 07:31
поделиться

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

var testStart = new Date();

// code to be tested here

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

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

1
ответ дан 28 November 2019 в 07:31
поделиться

Ускорение страницы FireBug или Google для Firefox имеют профилирование.

0
ответ дан 28 November 2019 в 07:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: