Mon estimation, en notant que je ne suis pas un statisticien, est que les frais généraux sont quelque chose comme 8-12 % plus lent.
J'ai obtenu les résultats en utilisant 3 tableaux structurellement similaires et simples avec deux colonnes TEXT, exécutant 10 000 inserts pour chaque tableau, en répétant cette opération 5 fois sur 4 appareils.
Tableau 1 (colonne Dflt) a été créé avec seulement les deux colonnes TEXT (utilisant ainsi le ROWID par défaut).
Tableau 2 (colonne AI) a été créé à l'aide de _id INTEGER PRIMARY KEY AUTOINCREMENT
en plus des deux colonnes TEXT.
Tableau 3 (aucune colonne AI) a été créé à l'aide de _id INTEGER PRIMARY KEY
en plus des deux colonnes TEXT.
Donc Tableau 2 utilise l'algorithme de sélection ROWID légèrement différent pour les encarts.
Les quatre appareils utilisés étaient :-
-
(1) Un appareil émulé par Genymotion (Tablette personnalisée - 5.1.0 - API 22 - 1536x2048)
-
(2) Une tablette Onix 10" (AT101-1116)
-
(3) Un HTC 1 M8 (HTC_0PKV1)
-
(4) Une tablette Lenevo A10-30 (Lenovo TB2-X30F)
Les résultats que j'ai obtenus étaient :-
Les résultats sont plus favorables lorsque tout est exécuté en une seule transaction (c'est-à-dire beginTransaction();
avant toute insertion, avec setTransactionSuccessful();
et endTransaction();
après toutes les insertions (pour tous les tableaux, c'est-à-dire l'intégralité des 150 000 insertions), par ex. :-
La comparaison des deux tableaux met en évidence les avantages que l'utilisation des transactions peut avoir sur les performances.