объединение sqlite - PullRequest
       6

объединение sqlite

4 голосов
/ 14 сентября 2011

Я недавно читаю исходный код sqlite3.В объединенной версии всего четыре файла.На официальном веб-сайте говорится, что:

"объединение также ускоряет работу"

"Мы измерили улучшение производительности от 5 до 10%, когда мы используем объединение для компиляции SQLite, а не отдельных исходных файлов. "

Я не понимаю, как они это делают и почему.У кого-нибудь есть какие-либо идеи?У нас есть какие-либо инструменты для этого?

1 Ответ

4 голосов
/ 14 сентября 2011

Вы можете получить аналогичный результат, если проанализируете все файлы .c, извлечете все #include s, а затем создадите огромный файл, который сначала перечисляет все включенные файлы, а затем перечисляет все остальное содержимое этих файлов .c.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...