Опускание точек с запятой влияет на производительность в JavaScript?

Я обсуждал с коллегой о JavaScript, глядя на некоторые фрагменты. Мы заметили, что эти фрагменты отсутствовали в ; в конце инструкций. Мы все знаем, что JS интерпретируется правильно, даже если точка конца с запятой не показана в конце строки, но мне было интересно, влияет ли это на оценку производительности, поскольку это интерпретируемый язык.

Ответ 1

Файл javascript с пробелами, полуколониями и комментариями более тяжелый. Это основное влияние.

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

Оставьте полуколоны там, где они есть, вы избежите ошибок.

И используйте minifier (например, Closure компилятор), чтобы создать более сжатый код для браузера, если вы действительно хотите иметь самый легкий код, Это его долг, а не ваш.

Ответ 2

Опускание точек с запятой в JS - это большие дебаты, но мы всегда должны придерживаться точки с запятой. Если вы говорите об эффективности, то при сохранении точки с запятой будет очень мало пользы.

Но все не только здесь. Помимо производительности есть одна большая вещь, которая должна быть осторожна.

Дуг Крокфорд очень хорошо объясняет необходимость точки с запятой в этой презентации:

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

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

Надеюсь, это поможет вам.

Ответ 3

Ссылаясь на предоставленный тест: Это действительно не иллюстрирует разницу в производительности ASI vs non ASI. Эффективность, которая будет затронута, скорее всего, в токенизации. Интерпретатор или JIT не будут делать это для каждой итерации, но только один раз. Эффект, вероятно, будет заметен только при загрузке большой базы кода. Точка с запятой позволяет JIT или интерпретатору быстрее распознавать конец оператора, чем выводить его из следующих токенов.

Ответ 4

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

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