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
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.
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.
que es otra manera de mirarlo. –
"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. –
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.
- 1. ¿Por qué oscurece su código?
- 2. ¿Por qué git svn dcommit pierde el historial de fusiones de fusiones para sucursales locales?
- 3. ¿Por qué Google desinstala su código de seguimiento de Analytics?
- 4. ¿Por qué Go usa su propio generador de código?
- 5. ¿Por qué LinkedHashMap no proporciona acceso por índice?
- 6. Comprobando el código SQLite en línea
- 7. intrusive_ptr: ¿Por qué no se proporciona una clase base común?
- 8. Por qué el compilador proporciona el constructor de copia predeterminado
- 9. ¿Por qué se proporciona orig_eax además de eax?
- 10. ¿Por qué este código SQL proporciona el error 1066 (No es la única tabla/alias: 'usuario')?
- 11. ¿Por qué jQuery no proporciona un método .firstChild?
- 12. SQLite Código de error 17
- 13. ¿Por qué borrar una base de datos SQLite no reduce su tamaño?
- 14. ¿Puede gitk mostrar la diferencia de fusiones por defecto?
- 15. ¿Por qué Haskell no proporciona pliegues para arrays unidimensionales?
- 16. ¿Por qué magento no proporciona Guía o Manual para desarrolladores?
- 17. ¿Por qué el casting proporciona CS0030, mientras que "as" funciona?
- 18. ¿Por qué utilizar su caché de nivel de aplicación si la base de datos ya proporciona almacenamiento en caché?
- 19. ¿Por qué impulso :: variante no proporciona el operador! =
- 20. "refactor de refactorización refactoriza su código". ¿Qué significa esto exactamente y por qué hacerlo?
- 21. Eliminar fusiones incorrectas del repositorio
- 22. ¿Cómo manejar fusiones con hgsubversión?
- 23. ¿Qué usa para proteger su código .NET de ingeniería inversa?
- 24. ¿Por qué getElementsByClassName de JavaScript proporciona un objeto que NO es una matriz?
- 25. ¿Por qué los archivos .pyc de python contienen la ruta absoluta de su código fuente?
- 26. ¿Por qué las personas usan valores de magia en lugar de nulo en su código?
- 27. ¿Indesea su código HTML?
- 28. ¿Por qué usar la base de datos sqlite en Android?
- 29. ¿Por qué System.Web.HttpUtility.UrlEncode no proporciona nombre de espacio de nombres en Visual C# 2008?
- 30. Por qué el módem GPRS proporciona una pila TCP/IP incorporada
Gracias! No me di cuenta que tenían una página sobre –
De nada :) – Zuu