Почему компиляция C ++ занимает так много времени? - PullRequest
499 голосов
/ 25 ноября 2008

Компиляция файла C ++ занимает очень много времени по сравнению с C # и Java. Компиляция файла C ++ занимает значительно больше времени, чем запуск скрипта Python нормального размера. В настоящее время я использую VC ++, но то же самое с любым компилятором. Почему это?

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

Ответы [ 13 ]

4 голосов
/ 25 ноября 2008

Некоторые причины:

1) Грамматика C ++ является более сложной, чем C # или Java, и для ее анализа требуется больше времени.

2) (более важно) Компилятор C ++ создает машинный код и выполняет все оптимизации во время компиляции. C # и Java идут на полпути и оставляют эти шаги JIT.

2 голосов
/ 20 июня 2009

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

1 голос
/ 18 августа 2016

Есть две проблемы, которые, я могу подумать, могут повлиять на скорость компиляции ваших программ на C ++.

ВОЗМОЖНАЯ ПРОБЛЕМА № 1 - СОСТАВЛЕНИЕ ЗАГОЛОВОКА: (Это может быть, а может и не быть уже решено в другом ответе или комментарии.) Microsoft Visual C ++ (AKA VC ++) поддерживает предварительно скомпилированные заголовки, которые я настоятельно рекомендую , Когда вы создаете новый проект и выбираете тип программы, которую вы делаете, на экране должно появиться окно мастера установки. Если вы нажмете кнопку «Далее>» в нижней части окна, откроется окно с несколькими списками функций. убедитесь, что установлен флажок рядом с параметром «Предварительно скомпилированный заголовок». (ПРИМЕЧАНИЕ. Это мой опыт работы с консольными приложениями Win32 на C ++, но это может быть не так для всех видов программ на C ++.)

ВОЗМОЖНАЯ НОМЕРА № 2 - МЕСТО, КОТОРОЕ СОБИРАЕТСЯ: Этим летом я прошел курс программирования, и нам пришлось хранить все наши проекты на флэш-накопителях 8 ГБ, так как компьютеры в лаборатории были использовали стирали каждую ночь в полночь, что стерло бы всю нашу работу. Если вы компилируете на внешнее устройство хранения данных в целях переносимости / безопасности / и т. Д., Для компиляции вашей программы может потребоваться очень большое время (даже с предварительно скомпилированными заголовками, о которых я упоминал выше), особенно если это довольно большая программа. Мой совет для вас в этом случае будет состоять в том, чтобы создавать и компилировать программы на жестком диске компьютера, который вы используете, и всякий раз, когда вы захотите / по какой-либо причине прекратите работу над вашими проектами, перенесите их на ваш внешний устройства хранения, а затем щелкните значок «Безопасное извлечение устройства и извлечения носителя», который должен появиться в виде небольшой флэш-накопителя за небольшим зеленым кружком с белой галочкой на нем, чтобы отключить его.

Надеюсь, это поможет вам; дайте мне знать, если это так! :)

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