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
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.
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.
das ist ein anderer Weg, um es zu betrachten. –
"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. –
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.
- 1. Warum Python Pandas keine Linux WHL-Dateien zur Verfügung stellt
- 2. Wie stellt man den REST-Service für JSON zur Verfügung?
- 3. Wie stellt man Standardparameter in anonymen Javascript-Funktionen zur Verfügung?
- 4. wie man API für unser System zur Verfügung stellt
- 5. Wie man Informationssymbol im Vbscript zur Verfügung stellt?
- 6. Warum stellt Python Sperrmechanismen zur Verfügung, wenn es einer GIL unterliegt?
- 7. Eigene Laufzeitanalyse Ihres Codes in C#
- 8. Warum Qt eine Klasse zur Unterklasse zur Verfügung stellen?
- 9. Senden von C-Strukturen an eine zukünftige Version Ihres Codes?
- 10. Atlassian JIRA Plugin-Entwicklung: Wie man Variablen Geschwindigkeitsvorlagen zur Verfügung stellt
- 11. Kann die JNDI DataSource, die Tomcat im Frühjahr zur Verfügung stellt, nicht verwenden?
- 12. Google stellt die automatische Vervollständigung in Windows Mobile IE nicht zur Verfügung. Browser
- 13. Wie man Variable überall in Java ohne Parameter zur Verfügung stellt
- 14. Angular 2: wie man `--module System --experimentalDecorators` Fahnen zur Verfügung stellt?
- 15. Wie stellt man eine Liste von Listen von C++ zu Qml zur Verfügung?
- 16. Stellt Spring den SecurityContext für den Thread zur Verfügung, der einen Hystrix-Befehl ausführt
- 17. Wie man implicits zur Reflexion zur Verfügung
- 18. Annotation zur Verfügung generischer Typ
- 19. Warum wird über eine Schnittstelle zur Verfügung gestellt Deponieren Sie
- 20. Verlangt das Aufräumen Ihres Codes einen individuellen Git-Commit?
- 21. hg automatische Verschmelzungen mit diff3
- 22. R-Forge: binary nicht zur Verfügung gestellt
- 23. Was steht Klassenmethoden in Python zur Verfügung?
- 24. Wie man benutzerdefinierte Funktion für Python Blaze mit SQLite Backend zur Verfügung stellen?
- 25. Properway zur Verfügung Klasse in Parallel.Foreach
- 26. Scalacheck ignoriert die zur Verfügung gestellten Generatoren
- 27. Gradle zur Verfügung gestellt Abhängigkeiten in Krieg
- 28. Welche Einheitentestoptionen stehen für Silverlight zur Verfügung?
- 29. Aerospike Cluster nicht sauber zur Verfügung Blöcke
- 30. Klasse Variable nicht zur Verfügung Klassenmodule
Danke! Hab nicht bemerkt, dass sie eine ungefähr Seite hatten –
Gern geschehen :) – Zuu