Według moich szacunków, zwracając uwagę, że nie jestem statystykem, koszty ogólne wynoszą mniej więcej 8-12% wolniej.
Wyniki uzyskałem za pomocą 3 strukturalnie podobne i proste tabele z dwiema kolumnami TEKST, działającymi 10 000 wstawia się na każdą tabelę, powtarzając to 5 razy na 4 urządzeniach.
Tabela 1 (kolumna Dflt) został utworzony tylko z dwóch kolumn TEKSTOWYCH (w ten sposób z wykorzystaniem domyślnego ROWID).
Tabela 2 (kolumna AI) został utworzony przy użyciu _id INTEGER PRIMARY KEY AUTOINCREMENT
oprócz dwóch kolumn TEKST.
Tabela 3 (bez kolumny AI) został utworzony przy użyciu _id INTEGER PRIMARY KEY
oprócz dwóch kolumn TEKST.
Więc Tabela 2 używa nieco innego algorytmu wyboru ROWID na wkładki.
Cztery użyte urządzenia to:-
-
(1) Emulowane urządzenie Genymotion (tablet niestandardowy — 5.1.0 — API 22 — 1536x2048)
-
(2) Tablet Onix 10" (AT101-1116)
-
(3) HTC 1 M8 (HTC_0PKV1)
-
(4) Tablet Lenevo A10-30 (Lenovo TB2-X30F)
Otrzymane przeze mnie wyniki były następujące:-
Wyniki są korzystniejsze, gdy wszystko jest uruchamiane tylko w jednej transakcji (tj. beginTransaction();
przed wstawkami, z setTransactionSuccessful();
i endTransaction();
po wszystkich insertach (dla wszystkich tabel, czyli całych 150 000 insertów), np. :-
Porównanie obu tabel podkreśla korzyści, jakie korzystanie z transakcji może mieć dla wydajności.