Почему SQLite обеспечивает объединение своего кода?
Каждый раз, когда я скачиваю SQLite, я сталкиваюсь с тем, что они предоставляют несколько разных версий своего исходного кода, чего я никогда не видел ни в одном другом проекте. Более того, они предоставляют Amalgamations of Source, которые объединяют все свои файлы всего в 3 файла. В чем причина этого? Это просто скорость компиляции? Или есть действительно веские причины для этого? Используют ли другие проекты Объединение исходного кода?
3 ответа
Как говорится прямо на их странице об объединении
Помимо упрощения включения SQLite в другие проекты, объединение также ускоряет его работу. Многие компиляторы могут выполнять дополнительную оптимизацию кода, когда он содержится в одной единице перевода, такой как в объединении. Мы измерили улучшения производительности от 5 до 10%, когда мы используем объединение для компиляции SQLite, а не отдельных исходных файлов. Недостатком этого является то, что дополнительная оптимизация часто принимает форму встраивания функций, что приводит к увеличению размера получаемого двоичного изображения.
Я сам вижу, что включение в другие проекты является наибольшим преимуществом. Это просто значительно упрощает компиляцию. Никакой путаницы в сценарии сборки и всего остального следует из большой коллекции исходных файлов.
Это сделано для упрощения включения в существующие проекты. Добавьте один.h и один.c к своему проекту, и у вас будет полный движок SQLite.
Я ценю его. Это еще одна вещь, о которой я должен беспокоиться.
Когда я делил файл объединения на отдельные файлы под Windows с помощью компилятора dev C++, у меня возникало много вопросов. Поскольку я хочу, чтобы sqlite работал в ОС RTOS с именем DJYOS, проще изменить код из отдельных файлов, чем из объединенного.