2015-03-05 6 views
3

Я работаю над проектом базы данных, который компилирует запросы (выраженные на некоторых языках более высокого уровня) в код C++. Этот код компилируется и выполняется базой данных. Эта часть работает отлично.Уменьшить время компиляции clang с предварительно скомпилированными заголовками

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

Запрос переводится в файл Query.cpp, который включает в себя библиотеку/src/Database.hpp. Файл Database.hpp включает в себя дополнительные файлы, такие как StandardTypes.hpp и т. Д. Могу ли я прекомпилировать все эти файлы заголовков, чтобы ускорить компиляцию Query.cpp? Если да, как я могу это сделать? До сих пор я не мог найти хорошего примера для предварительно скомпилированных заголовков, только некоторые действительно основные вещи.

Я использую следующую команду для компиляции Query.cpp:

clang++ -fPIC -std=c++11 Query.cpp -I./library/src/ -shared -o libquery.so; 

ответ

2

для создания предварительно скомпилированных заголовков включают все заголовки не изменяются в Query.h и использование:

clang -cc1 Query.h -emit-pch -o Query.h.pch 

использовать предварительно скомпилированных тип заголовка:

clang -cc1 -include-pch Query.h.pch Query.cpp -shared -o libquery.so; 

Query.cpp необходимо включить Query.h

+0

Хорошая идея, я попробую. Есть ли шанс увидеть, использовал ли clang предварительно скомпилированный заголовок или нет? Что такое флаги: -shared -fPIC -std = C++ 11? – moo

+0

Не уверен, но вы можете добавить флаг ** - v **, который будет показывать подробный вывод. – codekiddy

+0

Но на самом деле также было бы достаточно прекомпилировать заголовок Database.hpp или? Это единственный заголовок, который напрямую включен в Query.cpp – moo

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