Будет ли разбиение кода на несколько .cpps сократить время компиляции? - PullRequest
1 голос
/ 01 октября 2009

Предположим, у меня довольно сложный класс, над которым я работаю. Половина методов сделана и протестирована, но я все еще делаю другую половину. Если я помещу готовый код в один cpp, а остальные - в другой, будет ли Visual Studio (или любая другая IDE в этом отношении) компилироваться быстрее, когда я только изменяю код, находящийся в cpp «в процессе разработки»?

Спасибо!

Ответы [ 5 ]

2 голосов
/ 01 октября 2009

Да, я считаю, что Visual Studio компилируется постепенно, поэтому, если вы нажмете «Построить», а не «Перестроить все», вы получите более быстрое время компиляции, разбив его на части.

Тем не менее, вы действительно должны быть разделены из-за причин факторинга кода, то есть каждый класс должен иметь одну цель и т. Д. И т. Д. ... Я уверен, что вы знаете.

1 голос
/ 01 октября 2009

Это действительно зависит. Для очень большого проекта время компоновки часто может быть значительно дороже, чем время компиляции одного файла. В нашей кодовой базе на работе (игра, основанная на Unreal Engine) мы на самом деле обнаружили, что создание файлов «bulk.cpp», которые включают много других файлов (фактически меньше единиц перевода), значительно сокращает время оборота.

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

0 голосов
/ 01 октября 2009

Да, это будет быстрее.

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

0 голосов
/ 01 октября 2009

Ответ, вероятно, да, потому что вы, вероятно, будете выполнять инкрементные сборки (компилируя только изменяемый .cpp) и предварительно скомпилированные заголовки. Если вы не используете ни одну из этих функций, сборка будет медленнее. Я уверен, что в проектах Visual Studio C ++ по умолчанию используются как инкрементные сборки, так и предварительно скомпилированные заголовки.

0 голосов
/ 01 октября 2009

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

Это верно как минимум для большинства IDE. У меня не было опыта непосредственного вызова компиляторов, таких как gcc, поэтому я не могу это комментировать.

...