2009-02-18 8 views
5

Cada vez que descargo SQLite, me doy cuenta de que ofrecen varias versiones diferentes de su código fuente, algo que nunca he visto en ningún otro proyecto. Y más aún, proporcionan Amalgamations of Source, ese tipo de fusión de todos sus archivos en solo 3 archivos. ¿Cuál es el motivo de esto? ¿Es solo velocidad de compilación? ¿O hay algunas buenas razones para ello? ¿Otros proyectos usan fusiones del código fuente?¿Por qué SQLite proporciona fusiones de su código?

Respuesta

10

Como se indica directamente en su page about amalgamation

Además de hacer SQLite más fácil de incorporar en otros proyectos, la fusión también hace correr más rápido. Muchos compiladores pueden realizar optimizaciones adicionales en el código cuando está contenido en una sola unidad de traducción, tal como está en la fusión. Hemos medido mejoras de rendimiento de entre 5 y 10% cuando utilizamos la fusión para compilar SQLite en lugar de archivos fuente individuales. La desventaja de esto es que las optimizaciones adicionales a menudo toman la forma de una función en línea que tiende a agrandar el tamaño de la imagen binaria resultante.

Yo mismo veo la incorporación a otros proyectos el mayor beneficio. Simplemente hace que sea mucho más fácil de compilar. No es necesario crear un guión de compilación y todo lo demás debido a tener una gran colección de archivos fuente.

+0

Gracias! No me di cuenta que tenían una página sobre –

+0

De nada :) – Zuu

4

Se hace para simplificar la incorporación en proyectos existentes. Agregue uno .h y uno .c a su proyecto, y tiene el motor SQLite completo.

Lo aprecio. Es una cosa menos de la que me tengo que preocupar.

+0

que es otra manera de mirarlo. –

+0

"Es una cosa menos de la que tengo que preocuparme". - Eso es hasta que se descubra un error de seguridad (u otro error grave) en SQLite; entonces * su * error se convierte en * su * problema. –

0

Cuando compré un archivo de amalgamación en archivos individuales en Windows con el compilador dev C++, recibí muchas preguntas. Como quiero que sqlite funcione en un RTOS que llamado DJYOS, es más fácil cambiar el código de los archivos individuales que de la fusión.

Cuestiones relacionadas