Mit skøn, idet jeg bemærker, at jeg ikke er statistiker, er, at overhead er noget i retning af 8-12 % langsommere.
Jeg opnåede resultaterne ved hjælp af 3 strukturelt lignende og enkle tabeller med to TEKST-kolonner, der kører 10.000 indsæt pr. hver tabel, gentag dette 5 gange på 4 enheder.
Tabel 1 (Dflt-kolonne) blev oprettet med kun de to TEKST-kolonner (derved udnyttede standard ROWID).
Tabel 2 (AI kolonne) blev oprettet ved hjælp af _id INTEGER PRIMARY KEY AUTOINCREMENT
ud over de to TEKST kolonner.
Tabel 3 (Ingen AI-kolonne) blev oprettet ved hjælp af _id INTEGER PRIMARY KEY
ud over de to TEKST kolonner.
Så Tabel 2 bruger den lidt anderledes ROWID-valgalgoritme til indlæg.
De fire anvendte enheder var:-
-
(1) En Genymotion-emuleret enhed (Custom Tablet - 5.1.0 - API 22 - 1536x2048)
-
(2) En Onix 10" tablet (AT101-1116)
-
(3) En HTC 1 M8 (HTC_0PKV1)
-
(4) En Lenevo A10-30 tablet (Lenovo TB2-X30F)
De resultater, jeg opnåede, var:-
Resultaterne er mere gunstige, når alt køres i kun 1 transaktion (dvs. beginTransaction();
før nogen indsættelser med setTransactionSuccessful();
og endTransaction();
efter alle indstik (for alle tabeller dvs. hele 150.000 indstik), f.eks. :-
Sammenligning af de to tabeller fremhæver de fordele, som brug af transaktioner kan have for ydeevne.