Эти <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>
форма, если файл не найден. Остальное определяется реализацией.
Вот статья от Google, в которой автор обсуждает свою работу над таймерами для Gmail. Они обнаружили, что использование одного высокочастотного таймера было быстрее, чем использование нескольких таймеров, если они использовали интенсивный и быстрый таймер.
У вас может быть один таймер, который срабатывает каждые 5 мсек, и добавить все ваши элементы, которые необходимо затухать, в структуру данных, которая отслеживает, где они находятся в процессе затухания. Затем ваш единственный таймер может просматривать этот список и выполнять следующее затухание для каждого элемента каждый раз, когда он запускается.
С другой стороны, пробовали ли вы использовать такую библиотеку, как Mootools или JQuery вместо того, чтобы использовать собственный фреймворк для анимации? Их разработчики приложили немало усилий для оптимизации таких операций.
В дополнение к другим ответам, вот отличная статья Джона Ресига о таймерах: http://ejohn.org/blog/how-javascript-timers-work/
Прежде всего, ваш скрипт не учитывает, что минимальный тайм-аут обычно составляет 10-15 мс в зависимости от браузера. Вы можете увидеть мой пост по этой теме . Внутри вы найдете таблицу популярных браузеров и ссылку на программу, которая их измеряет, так что вы можете проверить это утверждение самостоятельно. К сожалению, повторения каждые 5 мс - это принятие желаемого за действительное.
Во-вторых, таймеры не являются прерываниями. В них нет никакой магии - они не могут прервать все, что выполняется в браузере, и выполнить свою полезную нагрузку. Вместо этого они будут отложены до тех пор, пока не завершится выполнение кода и браузер не вернет управление и возможность запускать таймеры. Затухание 50 элементов требует времени, и я уверен, что это более 5 мс, особенно если принять во внимание всю отложенную модель браузера: вы обновляете DOM, и браузер обновит свое визуальное представление… в какой-то момент времени.
Я хочу закончить на положительной ноте: