Можно ли сократить время компиляции при использовании многих типов? - PullRequest
2 голосов
/ 06 февраля 2012

Позволяет придерживаться одного файла и одного заголовка. Я создаю заголовок, который содержит много информации, и я делаю облегченную версию этого заголовка с удалением многих методов. Заголовок перешел с 6 тыс. Строк на 3 тыс.

Вот пример того, как класс выглядит в легком заголовке

class SomeClass : public MACRO_FOR_KEYWORD TheBase {
    virtual void i_dont_filter_this_out(){}
public:
    deque<Var*> ls;
    inline SomeClass(){}
    inline virtual ~SomeClass(){}
    inline SomeClass(deque<Var*> ls_)
    {
        ls = ls_;
    }
};

Я попытался скомпилировать тот же файл, и он пошел от 8 секунд до 7 секунд ... Не те результаты, на которые я надеялся.

Я думаю, что, возможно, большая часть времени компиляции состоит в том, что я определяю очень много классов, а методы не имеют значения. Но мне нужно, чтобы все эти классы существовали. Theres около 280 классов. Я не думаю, что это много.

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

Примечание: я использую визуальные студии.

1 Ответ

1 голос
/ 06 февраля 2012

Вы можете экспортировать свои определения - при условии, конечно, что вы включите этот заголовок в другом месте.280 классов довольно мало, когда вы смотрите на большие проекты или библиотеки, такие как boost.Все эти классы принадлежат друг другу или они не могут быть разделены на более мелкие группы, чтобы уменьшить зависимость и время компиляции?Почему вы должны отдавать предпочтение легкому заголовку (с избыточным объявлением?) Над подходом, таким как сборка единства?

...