2009-02-18 3 views
5

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

10

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.

+0

Merci! Je n'ai pas remarqué qu'ils avaient une page sur le sujet –

+0

Vous êtes les bienvenus :) – Zuu

4

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.

+0

C'est une autre façon de voir les choses. –

+0

"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. –

0

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.

Questions connexes