JavaScript setTimeout () замедляется под большой нагрузкой

Эти <file> включают, говорит препроцессору искать в -I каталоги и в предопределенных каталогах первый , затем в каталоге.c файла. Эти "file" включают, говорит препроцессору искать каталог исходного файла сначала , и затем возвращаться к -I и предопределенный. Все места назначения ищутся так или иначе, только порядок поиска отличается.

стандарт 2011 года главным образом обсуждает включать файлы в "16.2 включениях Исходного файла".

2 А, предварительно обрабатывающие директиву формы

# include <h-char-sequence> new-line

поиски последовательность определенных реализацией мест для заголовка, определенного исключительно указанной последовательностью между < и> разделители и причины замена той директивы всем контентом заголовка. Как места определяются, или определенный заголовок определяется реализацией.

3 А, предварительно обрабатывающие директиву формы

# include "q-char-sequence" new-line

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

# include <h-char-sequence> new-line

с идентичной содержавшей последовательностью (включая> символы, если таковые имеются) из исходной директивы.

Примечание, что "xxx" форма ухудшается к <xxx> форма, если файл не найден. Остальное определяется реализацией.

5
задан core 30 July 2009 в 20:33
поделиться

3 ответа

Вот статья от Google, в которой автор обсуждает свою работу над таймерами для Gmail. Они обнаружили, что использование одного высокочастотного таймера было быстрее, чем использование нескольких таймеров, если они использовали интенсивный и быстрый таймер.

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

С другой стороны, пробовали ли вы использовать такую ​​библиотеку, как Mootools или JQuery вместо того, чтобы использовать собственный фреймворк для анимации? Их разработчики приложили немало усилий для оптимизации таких операций.

11
ответ дан 18 December 2019 в 11:59
поделиться

В дополнение к другим ответам, вот отличная статья Джона Ресига о таймерах: http://ejohn.org/blog/how-javascript-timers-work/

0
ответ дан 18 December 2019 в 11:59
поделиться

Прежде всего, ваш скрипт не учитывает, что минимальный тайм-аут обычно составляет 10-15 мс в зависимости от браузера. Вы можете увидеть мой пост по этой теме . Внутри вы найдете таблицу популярных браузеров и ссылку на программу, которая их измеряет, так что вы можете проверить это утверждение самостоятельно. К сожалению, повторения каждые 5 мс - это принятие желаемого за действительное.

Во-вторых, таймеры не являются прерываниями. В них нет никакой магии - они не могут прервать все, что выполняется в браузере, и выполнить свою полезную нагрузку. Вместо этого они будут отложены до тех пор, пока не завершится выполнение кода и браузер не вернет управление и возможность запускать таймеры. Затухание 50 элементов требует времени, и я уверен, что это более 5 мс, особенно если принять во внимание всю отложенную модель браузера: вы обновляете DOM, и браузер обновит свое визуальное представление… в какой-то момент времени.

Я хочу закончить на положительной ноте:

  • Вместо того, чтобы скрыть 50 отдельных элементов, попробуйте сгруппировать их и затемнить их родительский элемент - это может быть быстрее.
  • Проявляйте творческий подход к пользовательскому интерфейсу. Попробуйте придумать решение, которое не требует одновременного исчезновения большого количества независимых элементов.
  • Всегда проверяйте правильность ваших исходных предположений, прежде чем строить вокруг них.
  • Если можете, попробуйте нацелить современные браузеры. По моему личному опыту, Google Chrome очень хорош с таймерами, а его движок JavaScript (V8) очень быстр.
4
ответ дан 18 December 2019 в 11:59
поделиться
Другие вопросы по тегам:

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