2012-06-20 6 views
1

Можно создать дубликат:
What strategies have you used to improve build times on large projects?компиляции в VS2010 занимает слишком много времени

У меня есть 800 строк кода сделано в C++, файл CPP имеет некоторые 7-8 классов с одинаковым ни в объекты, но программа занимает хорошие 7 секунд для сборки. Это моя первая программа на C++, поэтому я хочу знать, нормально ли это? или его слишком много? Кроме того, было бы очень здорово, если бы кто-то, кто был экспертом в области C++, мог поделиться некоторыми идеями, которые помогут новичкам как мне. Если это помогает, я использую Visual Studio 2010.

+0

Возможно, это связано с только заголовками библиотек (например, boost :: asio). В этом случае вы должны использовать предварительно скомпилированные заголовки. – Mohammad

+0

В чем проблема? Когда у вас 8000 строк кода, требуется ли 7,5 секунд для сборки? –

+0

Да, что вы переживаете, это нормально. –

ответ

3

Время компиляции C++, вероятно, отличается от любого другого языка, который я когда-либо использовал.

Одна вещь, которая может существенно повлиять на то, какие заголовки вы включаете. Хотя ваш код может содержать только 800 строк, если некоторые из них равны #include, компилятор может легко смотреть на тысячи строк (только для справки, #include <windows.h>, сам по себе, как правило, означает, что компилятор будет смотреть более 10 000 линии).

Некоторые из нас в чат-комнате C++ недавно провели несколько тестов на особенно неприятную часть кода, в которой много рекурсивных шаблонов. Несмотря на то, что это всего лишь 30 строк кода, в зависимости от параметров, которые вы устанавливаете, довольно легко получить время компиляции часа или более - и с большинством компиляторов (включая VC++ 10 и 11/2012) довольно легко прямо сбой компилятора.

Если код имеет мало или ничего в виде заголовков и/или шаблонов (особенно таких, как рекурсивные шаблоны), то для слияния 7.5 секунд кажется довольно чрезмерным. Просто для сравнения, я сделал быстрый тест, составив программу, в которой я лежал, близкий к тому же размеру (926 строк). Это заняло 0,3 секунды. Моя машина - это что-то вроде 5 или 6 лет, поэтому ее скорость даже не закрывает. В то же время я должен добавить, что для компиляции небольшого количества кода скорость процессора, вероятно, не является основным определяющим фактором. Я бы ожидал, что SSD сделает гораздо больше различий, чем более быстрый процессор.

+0

Спасибо, Джерри! :) – vin

0

C++ - сложный язык, который требует больше времени для компиляции, чем многие другие языки. Кроме того, у этой Visual Studio есть дополнительные накладные расходы для создания баз данных Intellisense и т. Д. Существует также этап связывания, который следует рассмотреть после фактической компиляции.

Когда Visual Studio создает новый проект, он обычно создает предварительно скомпилированный заголовок, который включает в себя множество файлов заголовков Windows. Это добавит много тысяч строк к вашему 800-линейному источнику.

7 секунд кажется немного медленным, но не из строя.

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