Какие способы я могу использовать для воспроизведения спорадического т. Е. «Сценарий на этой странице, вызывает Internet Explorer медленно« уведомление »?

StackOverflow https://stackoverflow.com/questions/3686504

Вопрос

Я пытаюсь воспроизвести ошибку, которую сообщил клиент, это «этот скрипт запущен медленно», который появляется в IE из-за чрезвычайно медленного анализа JS / DOM.

Это не происходит на моей виртуальной коробке IE6 (у клиента IE6) и не работает на тестовой машине, у меня есть (некоторые Mac Mini).

Я могу гарантировать, что там происходит много JS, и есть много обработки HTML после того, как его извлекается с использованием XHR, кроме того, что многие JS, работающие на добавленных элементах DOM после этого. Я не могу поставить весь сценарий, но я уверен, что смогу легко отследить проблему вниз, но я хочу воспроизвести это, чтобы играть с оптимизацией.

Это действительно высокопроизводительный клиент, поэтому я не могу просто попасть по телефону или я и говорить с ними. Есть ли способы, которыми я мог бы замедлить мою машину, чтобы воспроизвести эту ошибку? Или я должен просто придерживаться спрашивать компьютерные спецификации клиента и попытаться получить доступ к более старуму компьютеру, который будет иметь более вероятную вероятность воспроизведения проблемы? Или даже использовать что-то вроде брауркама?

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

Я был бы признателен за любой совет.

Это было полезно?

Решение

Есть много вещей, которые можно сделать, чтобы замедлить ваш компьютер. Реальная проблема здесь заключается в том, хотите ли вы, чтобы быть точным, или просто то, что жует достаточно цикла ЦП, чтобы включить IE6, чтобы чаще воспроизвести эту проблему.

Начиная с грубых и простых методов: использование виртуальной машины, дайте ему только один процессор, затем запустите что-то с высоким использованием CPU, например, играть в фильме. Попробуйте использовать что-то, что не использует слишком много оперативной памяти, потому что заставляйте IE в PageFile не помогут вам здесь. Чтобы получить более точное замедление, вы можете подогнать ваш процессор, хотя для этого ради отладки JavaScript немного экстрим. Получение доступа к старому компьютеру может также сделать трюк, хотя ни один из них не гарантированно воспроизводить проблему.

Использование программного обеспечения для совместного использования экрана также может быть сложно - это зависит от того, насколько желающим клиент должен устанавливать и настроить такое программное обеспечение, но это определенно должно помочь воспроизвести ошибку. Придется играть с ним, пока вы используете время компьютера клиента, хотя, вероятно, будет неприемлемым.

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

Другие советы

Бегите внутрь виртуальной машины и снизить память нарочно, чтобы иметь лишний обмен. Если это все еще не работает, вы можете запустить некоторую бенчмаркинг SW на заднем плане, те, кто имеет тенденцию жевать много CPU.

Я нашел вашу проблему:
This is a really high profile client so I can't just get on the phone or IM and speak to them. - Это то, что вы собираетесь захотеть исправить, если они хотят его исправить.


В противном случае, если у вас есть представление о проблеме, вы можете:

  • Создайте документ XML / HTML с использованием случайной информации и храните его в строке
  • Затем попробуйте разбирать, что используя XMLDOM или что-то

Вы должны попробовать сделать это с миллионами строк:

sXML     = "<?xml version="1.0" encoding="UTF-8"?>\n<rootElement>\n";
for (var i=0;i<1000000;i++){
   sXML += '<element name="' + Math.floor(Math.random()*10001) + '">' 
         +    'some more random text: ' + Math.floor(Math.random()*1001) 
         + "</element>\n";
}
sXML     = "</rootElement>";

var oXML = (new DOMParser()).parseFromString(sXML, "text/xml");
var root = oXML.documentElement;

Конечно, вы можете сделать это как уточнить, как вы хотите, используя случайные элементы и т. Д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top