2009-05-19 8 views
7

Durante mis pruebas de rendimiento descubrí que la versión de SQLite que proporciona Apple en el iPhone 3.0 es significativamente más rápida que mi versión compilada de amalgamación SQLite. Entonces mi pregunta es, ¿hay alguna forma de descubrir qué opciones de compilación utilizó Apple?Forma de averiguar qué opciones de compilación se usaron para compilar SQLite

¿Hay alguna aplicación de prueba que imprima todas las configuraciones predeterminadas y la configuración de sqlite3_config?

Respuesta

1

Parece que el único diferente en la configuración pragma es el cache_size que es por defecto el 2000, pero en el iPhone es 500.

En algunos sistemas es posible conseguir leer el ajuste con este compilador: objdump - -full-contents -section .GCC.command.line

2

No hay forma de pedirle a libsqlite su configuración exacta, salvo intentar todas las permutaciones posibles y probar cada una para ver cuál se comporta igual (a menos que Apple haya hecho modificaciones personalizadas). Lo mejor que puede hacer es llamar al sqlite3_libversion que devuelve el número de versión de sqlite.

6

Puede usar el pragma compile_options (o las funciones relacionadas como se menciona en la documentación vinculada) para ver las opciones de tiempo de compilación que se usaron al compilar SQLite. Sin embargo, la disponibilidad de este pragma (y las funciones relacionadas) parece depender de si se habilitó en tiempo de compilación o no. La documentación de SQLite dice:

El apoyo a las funciones de diagnóstico sqlite3_compileoption_used (sqlite3_compileoption_get) y() se puede omitir especificando la opción SQLITE_OMIT_COMPILEOPTION_DIAGS en tiempo de compilación.

Por lo tanto, es probable que su distribución no haya habilitado esta característica en tiempo de compilación, lo que significa que es posible que no pueda ver las opciones.

Cuestiones relacionadas