2011-04-18 14 views
6

Mi problema es que no importa cómo construyo sqlite - mi binario es mucho más lento que el precompilado en la página de descarga de sqlite (aproximadamente 3 - 6 veces dependiendo de la consulta).Construyendo sqlite para Windows de manera adecuada

estoy usando sqlite3.h y sqlite3.c de la fuente de fusión:

http://www.sqlite.org/sqlite-amalgamation-3070602.zip

he añadido las siguientes banderas al compilar sqlite:

gcc 
-s -O4 -I. -fomit-frame-pointer 
-DNDEBUG 
-DSQLITE_OS_WIN=1 
-DSQLITE_HAVE_READLINE=0 
-DSQLITE_THREADSAFE=1 
-DSQLITE_TEMP_STORE=2 
-DSQLITE_ENABLE_RTREE 
-DSQLITE_ENABLE_FTS3 
-DSQLITE_OMIT_COMPILEOPTION_DIAGS 
-DSQLITE_ENABLE_COLUMN_METADATA 
-DNO_TCL 

construí ambos con MINGW y con MSVS 2010.

¿Alguien sabe cómo construir sqlite para obtener el mismo binario que en página de descarga?

Cualquier ayuda sería apreciada.

+0

¿Pero por qué querrías? Solo descárgalo. – MAW74656

+0

@ MAW74656: Es posible que desee incrustarlo para que el compilador pueda optimizar toda la base de código, optimizar el uso de la memoria o simplemente para que no tenga que cargar una DLL y lidiar con todas las ramificaciones de eso. Incrustarlo dentro de una aplicación es muy útil. –

Respuesta

2

Siga la guía en SQLite wiki : How to compile y compruebe cuáles son los argumentos Make que pasan al compilador. Mi primer sospechoso sería -O4, ya que el GCC de nivel más alto es -O3, e incluso esto suele ser peor que -O2 o -Os (porque el tamaño pequeño == no hay caché en la CPU, y -O3 abota mucho al binario).

Aunque puedo ver el enfoque difiere: Build On Windows Without Tcl utiliza -O2, pero la compra de entradas #931 utiliza los condenados -O4 "Gentoo modo Ricer". De cualquier forma, esos conmutadores de optimización no valen mucho sin especificar la arquitectura de destino: intente con -march=core2 o -march=native para detección automática, pero recuerde que dicho código no funcionará en CPUs anteriores. -march=nocona funcionará en algo más nuevo que Pentium 4 y aún le da al compilador mucho espacio para optimizaciones útiles.

+1

¿Alguna idea de qué opciones se usaron para compilar los archivos binarios descargables para Windows? –

Cuestiones relacionadas