Спасибо за ваши ответы.Что касается предварительно скомпилированных заголовков, я проверил, что они действительно используются (g++ -H
показывает около 1460 заголовочных файлов первоначально, и только около 30 при использовании предварительно скомпилированных заголовков) и время компиляции сократилось с 7 с до 5,5 с, что по-прежнему плохо по сравнению с1 при использовании вышеуказанного инкапсулированного класса.
Теперь, когда я попытался использовать any_iterator
(что, похоже, тоже является частью boost), я понял, что он также добавил несколько сотен других заголовочных файлов, но просто включил ихне увеличил время компиляции.Поэтому я попробовал то же самое с заголовком ptree и включил ptree.hpp
вместо ptree_fwd.hpp
, и это немного увеличило время компиляции (с 1,1 до 1,8 с).Таким образом, кажется, что большое время компиляции наступает только тогда, когда создаются шаблоны ptree?Это также может объяснить, почему предварительно скомпилированные заголовки не очень помогли?Будучи ленивым, и так как моей главной проблемой было время компиляции, я мог бы просто придерживаться чего-то вроде:
// myptree.h
#include <boost/property_tree/ptree.hpp>
class myptree {
private:
boost::property_tree::ptree m_tree;
boost::property_tree::ptree::iterator m_it;
...
};