Mi estimación, teniendo en cuenta que no soy un estadístico, es que los gastos generales son algo así como 8-12% más lento.
Obtuve los resultados usando 3 mesas estructuralmente similares y simples con dos columnas de TEXTO, corriendo 10,000 inserciones por cada mesa, repitiendo esto 5 veces en 4 dispositivos.
Tabla 1 (columna Dflt) se creó solo con las dos columnas de TEXTO (utilizando así el ROWID predeterminado).
Tabla 2 (columna AI) fue creado usando _id INTEGER PRIMARY KEY AUTOINCREMENT
además de las dos columnas de TEXTO.
Tabla 3 (sin columna AI) fue creado usando _id INTEGER PRIMARY KEY
además de las dos columnas de TEXTO.
Entonces Tabla 2 utiliza el algoritmo de selección ROWID ligeramente diferente para inserciones.
Los cuatro dispositivos utilizados fueron:-
-
(1) Un dispositivo emulado Genymotion (tableta personalizada - 5.1.0 - API 22 - 1536x2048)
-
(2) Una tableta Onix de 10" (AT101-1116)
-
(3) Un HTC 1 M8 (HTC_0PKV1)
-
(4) Una tableta Lenovo A10-30 (Lenovo TB2-X30F)
Los resultados que obtuve fueron:-
Los resultados son más favorables cuando todo se ejecuta en una sola transacción (es decir, beginTransaction();
antes de cualquier inserción, con setTransactionSuccessful();
y endTransaction();
después de todas las inserciones (para todas las tablas, es decir, las 150 000 inserciones completas), p. :-
La comparación de las dos tablas destaca los beneficios que el uso de transacciones puede tener sobre el rendimiento.