Ответ 1
Можно ли сказать, что код JavaScript не скомпилирован, даже JIT?
Нет. Хотя JavaScript традиционно является "интерпретированным" языком (хотя это необязательно обязательно), большинство JavaScript-движков компилируют его "на лету", когда это необходимо. V8 (движок в Chrome и NodeJS), используемый для компиляции сразу и быстро, затем возвращайтесь назад и агрессивно оптимизируйте любой код, который использовался много (старый стек FullCodegen + TurboFan); некоторое время назад, проведя много измерений в реальном мире, они переключились на первоначальный синтаксический анализ на byteocde и интерпретацию, а затем компилируют, если код многократно используется (новый стек Ignition + TurboFan), получая значительную экономию памяти, не компилируя код установки один раз. Даже двигатели, которые менее агрессивны, почти наверняка, по крайней мере, анализируют текст в какой-то форме байт-кода, отбрасывая комментарии раньше.
Помните, что "интерпретируемый" и "скомпилированный" обычно более экологичны, чем языковая вещь; есть C-интерпретаторы, и есть компиляторы JavaScript. Языки, как правило, тесно связаны с средами (например, как JavaScript, как правило, связан с средой веб-браузера, хотя он всегда использовался более широко, чем это, еще в 1995 году), но даже тогда (как мы видели), возможны изменения.
Если да, значит ли это, что комментарии влияют на производительность...
Очень, очень, очень минимальный, на начальной стадии синтаксического анализа. Но комментарии очень легко просканировать прошлое, о чем не о чем беспокоиться.
Если вы действительно беспокоитесь об этом, вы можете минимизировать свой script с помощью таких инструментов, как jsmin
или Closure Compiler (даже с простой оптимизацией). Первые просто разделит комментарии и ненужные пробелы, что-то вроде этого (все еще довольно эффективно); последний делает это и фактически понимает код и делает некоторую вставку и тому подобное. Таким образом, вы можете свободно комментировать, а затем использовать эти инструменты для обеспечения того, чтобы какое-либо незначительное влияние на эти комментарии при первом загрузке script было отключено с помощью инструментов для извлечения.
Конечно, дело в производительности JavaScript заключается в том, что трудно предсказать надежность кросс-движка, потому что двигатели меняются так сильно. Таким образом, эксперименты могут быть интересными:
- Вот эксперимент, который (теоретически) репарации/воссоздает функцию каждый раз
- Здесь один, который просто анализирует/создает функцию один раз и повторно использует ее
Результат? Я считаю, что в пределах погрешности измерения теста нет заметной разницы.