Обнаружение, когда JavaScript работает плохо

Я работаю над веб-приложением в jQuery, который, на более старых машинах или машинах без многого снабжает, может работать плохо. Для обхождения этого, я хотел бы сделать ухудшенную версию, которая отключает некоторые опции, особенно те, которые полагаются на большие изображения.

Как я могу сказать, работает ли мое приложение плохо на компьютере пользователя в jQuery или JavaScript в целом? Мне просто нужен способ вызвать функцию, которая ухудшит приложение. (особенно, когда пользователь может испытать нехватку системной памяти),

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

Спасибо!

15
задан Holy Crap 19 March 2010 в 07:57
поделиться

7 ответов

Нет никакого способа узнать, до того как ваш javascript начнет работать. Вы можете разбросать несколько объектов Date профилирования, например, так:

var timeTaken;
var start = +new Date();  // cast right now to a number

for (i = 0; i < 1000000000; i++)  // Some seriously intensive loop
{
    // ...
}

timeTaken = (+new Date()) - start;  // calculate the total time taken

if (timeTaken > 500)  // if time taken is longer than 500ms
    switchToBasic();

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

5
ответ дан 1 December 2019 в 05:15
поделиться

Если вам действительно нужно быть уверенным, что она работает на компьютерах низкого класса (и у вас нет старых компьютеров поблизости), почему бы не попробовать использовать виртуальную машину, например VirtualBox или подобную. Запуск ОС в виртуальной машине может замедлить ее работу, таким образом имитируя медленное оборудование. Я уверен, что большинство виртуальных машин позволяют настраивать скорость виртуального процессора...


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

Я бы предложил вам начать с создания ссылки, которая позволит пользователю переключить "режим медленного компьютера". Таким образом, терпеливые пользователи с медленными компьютерами могут сидеть и долго ждать, чтобы получить причудливые функции, если они этого хотят, или они могут отключить их, если они нетерпеливы. Это гораздо проще реализовать, и вы можете обнаружить, что тестеры/пользователи на самом деле довольны таким решением... :)

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

1
ответ дан 1 December 2019 в 05:15
поделиться

Не могли бы вы просто написать javascript-функцию, которая запускает контролируемый тест, хронометрирует результат, а затем использует его как основу для ухудшения сайта?

Может быть, уменьшенная версия одного из тестов из SunSpider, например

0
ответ дан 1 December 2019 в 05:15
поделиться

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

function showSlowDialog() {
   if(confirm("switch to slow?")) {
       switchToSlow();
   }
}

var timer = setTimeout("showSlowDialog()", 5000); // show dialog in 5 seconds
SomeSlowishOperationThatMayOrMayNotTakeSomeTime(); // do long operation
clearTimeout(timer); // clear timer.
0
ответ дан 1 December 2019 в 05:15
поделиться

Gmail показывает полосу загрузки со ссылкой "переключиться на HTML-only". Вы можете попробовать что-нибудь в этом роде. (Кроме того, если загрузка занимает много времени, ссылка "Переключиться только на HTML" становится более заметной. Она всплывает в середине экрана.)

.
0
ответ дан 1 December 2019 в 05:15
поделиться

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

Например, вы можете запустить приложение через профилировщик Firebug и проверить производительность всей системы с помощью YSlow .

0
ответ дан 1 December 2019 в 05:15
поделиться

Как говорят другие, запускайте контролируемые вычислительные тесты и измеряйте, сколько времени они занимают. Но вместо того, чтобы делать это только один раз, проведите несколько коротких тестов. Если даже один раз из десяти вы получите быстрый результат, вы знаете , что у вас быстрая машина.

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

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

0
ответ дан 1 December 2019 в 05:15
поделиться
Другие вопросы по тегам:

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