2009-02-18 2 views
5

Jedes Mal, wenn ich SQLite herunterlade, stoße ich auf die Tatsache, dass sie verschiedene Versionen ihres Quellcodes bereitstellen, was ich bisher in keinem anderen Projekt gesehen habe. Und mehr noch, sie bieten Amalgamations of Source, die alle ihre Dateien in nur 3 Dateien zusammenführen. Was ist der Grund dafür? Ist es nur Übersetzungsgeschwindigkeit? Oder gibt es dafür wirklich gute Gründe? Verwenden andere Projekte Zusammenführungen von Quellcode?Warum stellt SQLite Verschmelzungen ihres Codes zur Verfügung?

Antwort

10

Wie auf ihrem page about amalgamation

Neben der Herstellung SQLite leichter zu integrieren in andere Projekte direkt angegeben, die Verschmelzung macht es auch schneller laufen. Viele Compiler können zusätzliche Optimierungen am Code vornehmen, wenn er in einer einzelnen Übersetzungseinheit enthalten ist, wie es bei der Verschmelzung der Fall ist. Wir haben Leistungsverbesserungen zwischen 5 und 10% gemessen, wenn wir die Zusammenfassung verwenden, um SQLite und nicht einzelne Quelldateien zu kompilieren. Der Nachteil davon ist, dass die zusätzlichen Optimierungen oft die Form von Funktionsinlining haben, was dazu führt, dass die Größe des resultierenden Binärbildes größer wird.

Ich selbst sehe die Einbeziehung in andere Projekte den größten Nutzen. Es macht es einfach viel einfacher zu kompilieren. Kein Build Script Chaos und was auch immer sonst aus einer großen Sammlung von Quelldateien folgt.

+0

Danke! Hab nicht bemerkt, dass sie eine ungefähr Seite hatten –

+0

Gern geschehen :) – Zuu

4

Es ist getan, um die Integration in bestehende Projekte einfacher zu machen. Fügen Sie Ihrem Projekt eine .h- und eine .c-Datei hinzu, und Sie haben die vollständige SQLite-Engine.

Ich weiß es zu schätzen. Es ist eine Sache weniger, um die ich mich kümmern muss.

+0

das ist ein anderer Weg, um es zu betrachten. –

+0

"Es ist eine Sache weniger, um die ich mich kümmern muss." - Bis eine Sicherheitslücke (oder ein anderer schwerwiegender Fehler) in SQLite entdeckt wird; dann wird * ihr * Fehler * zu * deinem * Problem. –

0

Als ich die Verschmelzungsdatei zu einzelnen Dateien unter Windows mit dev C++ Compiler teilte, bekam ich eine Menge Frage. Weil ich möchte, dass sqlite in einem RTOS arbeitet, das namens DJYOS ist, ist es einfacher, den Code von einzelnen Dateien zu ändern als von einer Verschmelzung.

Verwandte Themen