Chaque fois que je télécharge SQLite, je trouve qu'ils fournissent plusieurs versions différentes de leur code source, ce que je n'ai jamais vu d'autre projet. Et plus encore, ils fournissent des amalgames de source, ce genre de fusionner tous leurs fichiers en seulement 3 fichiers. Quelle est la raison de cela? Est-ce juste la vitesse de compilation? Ou y a-t-il de très bonnes raisons? D'autres projets utilisent-ils des amalgames de code source?Pourquoi SQLite fournit-il des amalgames de code?
Répondre
Comme il est indiqué directement sur leur page about amalgamation
En plus de SQLite plus facile à incorporer dans d'autres projets, la fusion permet également de courir plus vite. Beaucoup de compilateurs sont capables de faire des optimisations supplémentaires sur le code quand il est contenu dans une seule unité de traduction, comme c'est le cas dans l'amalgamation. Nous avons mesuré des améliorations de performance entre 5 et 10% lorsque nous utilisons l'amalgamation pour compiler SQLite plutôt que des fichiers source individuels. L'inconvénient de ceci est que les optimisations supplémentaires prennent souvent la forme d'une fonction inline qui tend à rendre la taille de l'image binaire résultante plus grande.
Je vois moi-même l'incorporation dans d'autres projets le plus grand bénéfice. Cela rend simplement beaucoup plus facile à compiler. Pas de désordre de script de construction et tout ce qui suit d'avoir une grande collection de fichiers source.
Ceci est fait pour faciliter l'intégration dans les projets existants. Ajoutez un .h et un .c à votre projet, et vous avez le moteur SQLite complet.
Je l'apprécie. C'est une chose de moins dont je dois m'inquiéter.
C'est une autre façon de voir les choses. –
"C'est une chose de moins dont je dois m'inquiéter." - Jusqu'à ce qu'il y ait une faille de sécurité (ou un autre bogue sérieux) découverte dans SQLite; alors * leur * bug devient * votre * problème. –
Lorsque j'ai tridé le fichier de fusion en fichiers individuels sous windows avec le compilateur dev C++, j'ai eu beaucoup de questions. Parce que je veux que sqlite travaille dans un RTOS qui s'appelle DJYOS, il est plus facile de changer le code d'un fichier individuel que d'un amalgamation.
- 1. Exception SQLite: SQLite Occupé
- 2. Pourquoi sqlite n'insère qu'une seule colonne?
- 3. optimisation des requêtes SQLite
- 4. sqlite Optimisation des requêtes
- 5. Vérification des résultats de la requête sqlite
- 6. iPhone SDK: chargement UITableView de SQLite - tableau création de SQLite
- 7. Pourquoi SQLite n'incrémente-t-il pas ma clé primaire?
- 8. Pourquoi @SuppressWarnings casse mon code?
- 9. Pourquoi ce code C buggé?
- 10. SQLite - question de tri
- 11. Comment enregistrer des requêtes SQLite sur l'iPhone
- 12. Django et Sqlite Problème de simultanéité
- 13. Pourquoi NHibernate sélection simple dans HQL à base de données SQLite ne fonctionne pas?
- 14. Pourquoi ne puis-je pas exécuter ce code? Pourquoi ne puis-je pas exécuter ce code?
- 15. Pourquoi est-ce que j'obtiens un NSString invalide de SQLite pour mon UILabel?
- 16. pourquoi ce code ne fonctionne pas?
- 17. Sqlite en remplacement de fopen()?
- 18. Localisation de l'iPhone avec sqlite?
- 19. Pourquoi IPython ne peut-il pas retourner des enregistrements avec plusieurs champs lors de l'envoi d'une requête à sqlite?
- 20. Problème de substitution de paramètre SQLite
- 21. C#: Pourquoi ce code est-il ignoré?
- 22. code Ruby Désinfecter ... pourquoi est et désinfecté
- 23. Pourquoi ce code ne fonctionne pas?
- 24. Exemples Qt et Sqlite
- 25. SQLite - stockage de plusieurs valeurs
- 26. Utilisation de SQLITE avec VB6
- 27. Cascade.SaveOrUpdate (SQLite)-de Fluent NHibernate
- 28. fuites de code iPhone et je ne sais pas pourquoi
- 29. affichant des entiers dans android en utilisant sqlite
- 30. SQLite - valeur à portée
Merci! Je n'ai pas remarqué qu'ils avaient une page sur le sujet –
Vous êtes les bienvenus :) – Zuu