LINUX.ORG.RU
ФорумTalks

Насколько форматирование кода и комментарии влияют на скорость его компиляции?

 , , , сырцы


1

2

Каждый пробел/таб/перенос строки - это как минимум одна примитивная операция, а то и несколько (тут всё зависит от компилятора и его реализации). Учитывая, что их в исходном коде, в особенности в хорошем, довольно много, тормоз довольно значителен. Комментарии тоже надо обойти - как минимум на каждый символ до его конца - условие и переход. При чём тут Linux? А при том, что в source-based дистрах компиляция тяжелого софта (ядро, либра, кеды) длится довольно долго. То есть профит от компрессии исходников очевиден. Почему же это не принято даже в ебилдах, хотя уже давно считается хорошим тоном для скриптовых языков (например, JS)? У сообщества же нету особого смысла вынуждать пользователей покупать более мощное железо. Компиляторы совершенствуются и вылизываются, а такие глобальные вещи не учитываются.

★☆

Последнее исправление: CYB3R (всего исправлений: 1)

Время прохода переноса строки/пробела/таб-а компилятором ничтожно по сравнению с прогоном оптимизаций, разворачиванием всяких шаблонов и прочих высокоуровневых вещей в машинный код

Pinkbyte ★★★★★
()

Учитывая, что их в исходном коде, в особенности в хорошем, довольно много, тормоз довольно значителен.

цифры в студию.

qnikst ★★★★★
()

Почему же это не принято даже в ебилдах, хотя уже давно считается хорошим тоном для скриптовых языков (например, JS)?

Потому что JS-код передаётся по сети и стрипают переносы строк, пробелы и табы для того, чтобы меньше весил сам код, а не чтобы быстрее исполнялся.

resurtm ★★★
()
Ответ на: комментарий от resurtm

Потому что JS-код передаётся

А ебилды по сети не передаются, что ли? Если форматирование и архиватор хорошо сжимает, то с комментариями не так всё гладко.

MiniRoboDancer ★☆
() автор топика
Ответ на: комментарий от nanoolinux

как раз наоборот.

и как ты без переносов влезешь в определённую ширину?
или по-твоему однострочники это эталон? о_О

megabaks ★★★★
()

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

true_admin ★★★★★
()

Насколько очищенность мяса влияет на скорость его приготовления?

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



//На самом деле, я не уловил тонких логических связей в оп-посте. Вообще.

takino ★★★★★
()
Ответ на: комментарий от drull

Хороший код - это документированный код.

Документированный именами функций, параметров, etc, и внятно структурированный. Комментариев в хорошем коде очень мало.

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 1)

Учитывая, что их в исходном коде, в особенности в хорошем, довольно много, тормоз довольно значителен.

Тормоз станет значителен, когда на один полезный символ будет приходиться хотя бы несколько мегабайт пробелов и комментариев :D

Manhunt ★★★★★
()

нинасколько. Компилятор этим не занимается.

Jetty ★★★★★
()

Пока ты не провел тесты и не дал пруфов с цифрами, помолчи. Возьми код чего-нибудь более-менее приличного размера и попробуй сам сканпелять. Например, хромиум. Если ты такой умный, то пострипай \t, \n и т. д. и запусти компиляцию. Обязательно в равных условиях. Посчитай погрешности в своих экспериментах. Сделай выводы. Доложи на лор, чтоб мы знали, что ты не балабол. А то, надо же, в голову взбрело - непроверенную инфу на лор таскать.

cdshines ★★★★★
()
Ответ на: комментарий от true_admin

В языках со скобочками можно все записать в одну строку почти без пробелов. А в питоне на каждую команду по 4 пробела отступов на каждый уровень!

vurdalak ★★★★★
()
Ответ на: комментарий от true_admin

То ли дело питон...

И что от него останется, если убрать whitespaces? Он же даже не запустится! Другое дело скобочки...

iVS ★★★★★
()
Ответ на: комментарий от true_admin

Теперь ты понимаешь почему у языков со скобочками нет будущего

<very_fat>Да, begin/end и XML-теги куда лучше скобочек.</very_fat>

А эти ваши питоновские, бэйсиковские и кофискриптовские переносы и отступы ставят жёсткие требования к стилю кода.

MiniRoboDancer ★☆
() автор топика
Ответ на: комментарий от vurdalak

А в питоне на каждую команду по 4 пробела отступов на каждый уровень!

ха-ха, погугли python one-liners :P Не перл, канэшн, но если надо выпендрится то это можно сделать.

true_admin ★★★★★
()
Ответ на: комментарий от iVS

Другое дело скобочки...

И что от него останется, если убрать скобочки? Он же даже не запустится! Другое дело пробелы...

true_admin ★★★★★
()
Ответ на: комментарий от MiniRoboDancer

Я потому и сказал консервы, что аллегория именно такая. Как связана скорость компилирования и сжатие исходников?

takino ★★★★★
()
Ответ на: комментарий от MiniRoboDancer

жёсткие требования к стилю кода.

Если говороть серьёзно то я был на презентации Ларри Уолла (тот чувак что перл придумал). Пол часа подкалывал на счёт питона, потом показал свой perl6. Я не сразу понял что что-то поменялось потому что перловый код был отформачен точно так же.

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

true_admin ★★★★★
()
Ответ на: комментарий от takino

Как связана скорость компилирования и сжатие исходников?

Компилятор избавляется от ненужной работы по игнорированию комментариев, отступов и переносов.

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

MiniRoboDancer ★☆
() автор топика
Ответ на: комментарий от drull

Хороший код - это документированный код.

/**
  @brief    Add two numbers
  @param    a The first number to be add
  @param    b The second number to be add
  @return   int Result of summation

  This function must be called when user wants to add two integer number. No
  overflow detection implemented. User must check it by him(her)self.

  Returns summation of two numbers upon successfull completion.
*/

int do_sum(int a, int b) {
  return a+b;
}
nanoolinux ★★★★
()
Ответ на: комментарий от qnikst

Цифры в студию.

Таки да, поддерживаю идею эксперимента. Сравнить время канпеляции ядра после прогона astyle --style=gnu и astyle --style=pico.

Camel ★★★★★
()
Ответ на: комментарий от takino

Зачем повторять? Это не оригинально. Хотя бы укорачивателем ссылок воспользовался, чтоб я сразу не догадался.

MiniRoboDancer ★☆
() автор топика
Ответ на: комментарий от vurdalak

А так можно записать несколько вложенных условий или циклов?

канэшн можна :). itertools.product()

true_admin ★★★★★
()
Ответ на: комментарий от Miguel

В тысячи раз реже.

Ты хочешь сказать, что их обычно покупают на дисках или переносят у друзей на флэшках? О_О

Или ты имеешь в виду, что некоторые особо запущенные личности их пересобирают по тысячу раз (одни и те же версии!)?

MiniRoboDancer ★☆
() автор топика
Ответ на: комментарий от MiniRoboDancer

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

qnikst ★★★★★
()
Ответ на: комментарий от MiniRoboDancer

Ты хочешь сказать, что их обычно покупают на дисках или переносят у друзей на флэшках?

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

Miguel ★★★★★
()
Ответ на: комментарий от qnikst

А, по сравнению со скриптами...

пользователь качает изменившиеся ебилды в среднем 1 раз в день

А ты с арчеводами не путаешь часом?

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

MiniRoboDancer ★☆
() автор топика
Ответ на: комментарий от Miguel

но пользователей, заходящих на эту страничку, тоже до фига

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

MiniRoboDancer ★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.