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

Пропустить некоторый код, если компьютер работает медленно

Есть ли способ определить, медленный компьютер и не запускать какой-либо код (либо отключив анимацию jQuery, либо просто запустив функцию, если она быстро)?

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

var start = new Date();
//... some jQuery animation
var end = new Date();
var diff = end - start;

Затем, например, если анимация займет 1,5 секунды, а разница во времени равна 5 секундам, отключите все оставшиеся анимации.

Ответ 3

Я думаю, что есть два варианта:

  • Позвольте пользователю решить - предоставить пользователю "низкую пропускную способность/низкую спецификацию", которая при нажатии будет отображать более простую версию сайта.

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

Надеюсь, это даст вам некоторые идеи.

Джош

Ответ 4

Я хотел бы указать, что если вы собираетесь оставить это для пользователя (что я считаю хорошей идеей), вы должны четко указать, что вы спрашиваете о скорости компьютера, а не скорости соединения или пропускной способности, У пользователя может быть очень быстрый ноутбук, но он работает на медленном общественном Wi-Fi-соединении или наоборот. Поскольку Javascript является клиентской стороной, это имеет значение только скорость компьютера.

Ответ 5

Учитывая, что JavaScript работает в частичной среде доверия, вы не сможете получить информацию о OS-уровне, я бы подумал.

Лучшее, что вы можете сделать, это тест "отзывчивость". Возможный подход состоял бы в том, чтобы начать играть полную анимацию и обнаруживать отставание, сравнивая целевую частоту кадров с "реальной" частотой кадров. Затем вы можете просто пропускать биты анимации (кода), чтобы сократить время вычислений и, соответственно, повысить скорость реакции/кадров. Это, по сути, то, как многие настольные игры обнаруживают отставание и тем самым уменьшают сложность анимации. Я не могу гарантировать, что он будет работать одинаково хорошо в браузере с JavaScript, но стоит попробовать.

Ответ 6

Я предполагаю, что код, который вы хотите отключить, занимает значительное количество времени.

Я предлагаю вам:

  • Начните выполнять этот код
  • После того, как он частично выполнен, посмотрите, сколько эллиптических данных в режиме реального времени
  • Если слишком много времени в режиме реального времени эллипсоировано (т.е. если код выполняется слишком медленно), отмените выполнение, а не завершите его.