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

Могут ли комментарии влиять на производительность?

Можно ли сказать, что код JavaScript не скомпилирован, даже JIT? Если да, значит ли это, что комментарии влияют на производительность, и я должен быть очень осторожен, когда я помещаю свои комментарии? Например, если комментарии по функциям выше и вне определения функции, и, возможно, избегать размещения комментариев внутри циклов, если я хотел бы максимизировать производительность? Я знаю, что в большинстве случаев (по крайней мере, в случаях, не связанных с циклом) изменение производительности было бы незначительным, но я думаю, что это было бы хорошо знать и быть в курсе, особенно для разработчиков front-end/js, Кроме того, был задан соответствующий вопрос по оценке js, которую я недавно принял.

4b9b3361

Ответ 1

Можно ли сказать, что код JavaScript не скомпилирован, даже JIT?

Нет. Хотя JavaScript традиционно является "интерпретированным" языком (хотя это необязательно обязательно), большинство JavaScript-движков компилируют его "на лету", когда это необходимо. V8 (движок в Chrome и NodeJS), используемый для компиляции сразу и быстро, затем возвращайтесь назад и агрессивно оптимизируйте любой код, который использовался много (старый стек FullCodegen + TurboFan); некоторое время назад, проведя много измерений в реальном мире, они переключились на первоначальный синтаксический анализ на byteocde и интерпретацию, а затем компилируют, если код многократно используется (новый стек Ignition + TurboFan), получая значительную экономию памяти, не компилируя код установки один раз. Даже двигатели, которые менее агрессивны, почти наверняка, по крайней мере, анализируют текст в какой-то форме байт-кода, отбрасывая комментарии раньше.

Помните, что "интерпретируемый" и "скомпилированный" обычно более экологичны, чем языковая вещь; есть C-интерпретаторы, и есть компиляторы JavaScript. Языки, как правило, тесно связаны с средами (например, как JavaScript, как правило, связан с средой веб-браузера, хотя он всегда использовался более широко, чем это, еще в 1995 году), но даже тогда (как мы видели), возможны изменения.

Если да, значит ли это, что комментарии влияют на производительность...

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

Если вы действительно беспокоитесь об этом, вы можете минимизировать свой script с помощью таких инструментов, как jsmin или Closure Compiler (даже с простой оптимизацией). Первые просто разделит комментарии и ненужные пробелы, что-то вроде этого (все еще довольно эффективно); последний делает это и фактически понимает код и делает некоторую вставку и тому подобное. Таким образом, вы можете свободно комментировать, а затем использовать эти инструменты для обеспечения того, чтобы какое-либо незначительное влияние на эти комментарии при первом загрузке script было отключено с помощью инструментов для извлечения.

Конечно, дело в производительности JavaScript заключается в том, что трудно предсказать надежность кросс-движка, потому что двигатели меняются так сильно. Таким образом, эксперименты могут быть интересными:

Результат? Я считаю, что в пределах погрешности измерения теста нет заметной разницы.

Ответ 2

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

Ответ 3

Это может иметь некоторый эффект. Очень минималистический эффект, хотя (даже IE6 правильно обрабатывает комментарии!)...

Однако большинство людей используют minifier, который удаляет комментарии. Так что все в порядке.

также:

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

Источник

Ответ 5

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