2015-06-13 2 views
5

Мне просто интересно, есть ли разница в производительности, используя пробелы до и после равных знаков. Подобно этим двум фрагментам кода.Пробелы равными знаками

первый

int i = 0; 

второй

int i=0; 

Я использую первый, но мой друг, который учится HTML/JavaScript сказал мне, что мое кодирование является неэффективным. Это правда в html/javascript? И это огромный удар в исполнении? Будет ли он также одинаковым для C++/C# и других языков программирования? И об отступе, он сказал, что 3 пробела лучше, чем вкладка. Но я уже так кодировал код. Поэтому я просто хочу знать, правильно ли он.

+2

Есть разница в _file size_ (в основном важна для javascript), но не в производительности. В C# код все равно дробит, поэтому пробелы или нет, это не имеет значения. –

+4

Ваш друг очень ошибается. Кроме того, см. Https://en.wikipedia.org/wiki/Minification_(programming) – Pubby

+0

, поэтому, в javascript, он даст небольшую скорость при загрузке/чтении всего скрипта? –

ответ

7

Ваш друг немного ошибочен.

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

Дополнительные пространства вряд ли могут иметь значимое различие во времени для разбора файла.

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


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

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


C++ - это скомпилированный язык. Таким образом, только компилятор, который использует разработчик, видит лишние пробелы (то же самое с комментариями). Эти пробелы исчезли после того, как код был скомпилирован в собственный код, который является конечным пользователем и запускается. Таким образом, проблемы с пробелами между элементами в строке просто не применимы вообще для C++.

Javascript является интерпретированным языком. Это означает, что исходный код загружается в браузер, а затем браузер анализирует код во время выполнения в некоторой форме кода операции, которую может выполнять интерпретатор. Пространства в Javascript будут частью загруженного кода (если вы не используете минимизатор для их удаления), но после анализа кода эти дополнительные пробелы не являются частью производительности кода во время выполнения.Таким образом, пробелы могут иметь небольшое влияние на время загрузки и, возможно, даже меньшее влияние на время синтаксического анализа (хотя я предполагаю, что это вряд ли будет измеримым или значимым). Как я сказал выше, способ оптимизации этого для Javascript заключается в использовании пробелов для повышения удобочитаемости в исходном коде, а затем для минимизации развернутого размера файла запускается минимизатор над кодом для создания развернутой версии кода. Это сохраняет максимальную читаемость и минимизирует размер загрузки.

+0

спасибо за ваше объяснение. : D –

2

Существует мало (javascript) для отсутствия производительности (C#, C++, Java). В компилируемых языках, в частности, исходный код компилируется в один и тот же машинный код.

Использование пробелов вместо вкладок может быть хорошей идеей, но не из-за производительности. Скорее, если вы не будете осторожны, использование вкладок может привести к появлению «tab rot», где в некоторых местах есть пробелы и пробелы, а отступы исходного кода зависят от настроек вашей вкладки, что затрудняет чтение ,

+1

Я думаю, что ключ к стрессу в этом анализируется и компилируется. Когда C#, C++, Java и такие языки скомпилированы, они больше не используют исходные файлы .cs, .cpp и т. Д., Тогда как файлы .js анализируются и считываются во время выполнения. Усиление производительности в js-минимизации находится в параметре/времени загрузки. – CalebB

Смежные вопросы