-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Performance comparison (2016) #2
Comments
Here are more results testing customized builds with recent sqlite versions: Rebooted again before the following tests: Custom legacy version based on cordova-sqlite-storage 1.4.7, built with sqlite 3.14.1:
Custom cordova-sqlite-evcore-extbuild-free 0.8.1, built with sqlite 3.14.1:
Custom legacy version based on cordova-sqlite-storage 1.4.7, built with sqlite 3.14.1 repeated:
Custom cordova-sqlite-evcore-extbuild-free 0.8.1, built with sqlite 3.14.1 repeated:
Rebooted yet again before the following tests: Custom legacy version based on cordova-sqlite-storage 1.4.7, built with sqlite 3.12.2:
Custom legacy version based on cordova-sqlite-storage 1.4.7, built with sqlite 3.12.2 repeated:
Using a newer version of sqlite does not seem to significantly affect the bulk insert or volume read tests. But for some reason, newer versions of sqlite seem to lead to longer repeated update/read test times. One important explanation is at: http://sqlite.org/releaselog/3_13_0.html. The default cache size was increased from 1024 to 4096, documented as a "potentially disrupting change". Since this project already uses 3.14.0 for iOS and Windows, I expect these platforms to be affected by this change. I think the solution would be to redefine SQLITE_DEFAULT_PAGE_SIZE in the iOS and Windows versions to be more consistent with the other project versions. Next steps:
|
Preliminary Windows 10 mobile test results from yesterday: Device: Microsoft Lumia 550 with Windows 10 Mobile 1 GB Version: 1607 OS build 10.0.14393.67 Rebooted before the following tests: cordova-sqlite-storage 1.4.7 (sqlite 3.8.10.2):
cordova-sqlite-evcore-extbuild-free 0.8.0 (sqlite
cordova-sqlite-evcore-extbuild-free 0.8.1 (sqlite 3.14.0):
cordova-sqlite-evcore-extbuild-free 0.8.1 custom built with sqlite 3.14.1:
|
Current iOS results: Device: iPhone 4S, iOS 8.1.2 Rebooted before the following tests: cordova-sqlite-storage 1.4.7 (sqlite 3.8.10.2):
cordova-sqlite-evcore-extbuild-free 0.8.0 (sqlite
cordova-sqlite-evcore-extbuild-free 0.8.1 (sqlite 3.14.0):
cordova-sqlite-evcore-extbuild-free 0.8.1 custom built with sqlite 3.14.1:
cordova-sqlite-storage 1.4.7 (sqlite 3.8.10.2) repeated:
cordova-sqlite-evcore-extbuild-free 0.8.0 (sqlite
cordova-sqlite-evcore-extbuild-free 0.8.1 (sqlite 3.14.0) repeated:
cordova-sqlite-evcore-extbuild-free 0.8.1 custom built with sqlite 3.14.1 repeated:
|
Test notes:
The test table is deleted after every step except for populate for read. General note(s):
Conclusions so far:
TODOs and other ideas:
|
Results of some further repeated testing on Android: Rebooted before the following tests: cordova-sqlite-storage 1.4.7 (sqlite 3.8.10.2):
Custom legacy version based on cordova-sqlite-storage 1.4.7, built with sqlite 3.12.2:
cordova-sqlite-evcore-extbuild-free 0.8.1 (sqlite 3.12.2):
cordova-sqlite-storage 1.4.7 (sqlite 3.8.10.2) repeated:
Custom legacy version based on cordova-sqlite-storage 1.4.7, built with sqlite 3.12.2 repeated:
cordova-sqlite-evcore-extbuild-free 0.8.1 (sqlite 3.12.2) repeated:
cordova-sqlite-storage 1.4.7 (sqlite 3.8.10.2) repeated again:
Custom legacy version based on cordova-sqlite-storage 1.4.7, built with sqlite 3.12.2 repeated again:
cordova-sqlite-evcore-extbuild-free 0.8.1 (sqlite 3.12.2) repeated again:
cordova-sqlite-storage 1.4.7 (sqlite 3.8.10.2) repeated yet again:
Custom legacy version based on cordova-sqlite-storage 1.4.7, built with sqlite 3.12.2 repeated yet again:
cordova-sqlite-evcore-extbuild-free 0.8.1 (sqlite 3.12.2) repeated yet again:
|
NOTE: The previously reported test results for Android and iOS came from debug builds on brody4hire/cordova-sqlite-perftest@d227577. (I cannot tell for sure whether the Windows preliminary results above is from Debug or Release build.) A quick test with release builds (using Cordova-sqlite-perftest 0.0.2 brody4hire/cordova-sqlite-perftest@add72ed with very minor changes) on Android and iOS did not show significant differences. Upcoming steps:
|
Minor update to Cordova-sqlite-perftest needed since a bulk insert of 60/70K records with cordova-sqlite-storage causes the test to log an |
Results of testing Cordova-sqlite-perftest 0.0.3 release build on new Android device: Samsung Galaxy J3 (2016) model number SM-J320F (dual-SIM) Android version 5.1.1 (device reserved for testing) Rebooted (recently) before the following tests: Web SQL:
cordova-sqlite-storage 1.4.8 (sqlite 3.8.10.2 with older default page/cache size):
cordova-sqlite-storage 1.4.8 with built-in android.database implementation (androidDatabaseImplementation: 2 setting):
cordova-sqlite-evcore-extbuild-free 0.8.2 (sqlite 3.12.2 with newer default page/cache size):
cordova-sqlite-storage (1.4.8) custom with sqlite 3.15.0 (newer default page/cache size):
cordova-sqlite-storage (1.4.8) custom with sqlite 3.15.0, older default page/cache size:
cordova-sqlite-evcore-extbuild-free (0.8.2) custom with sqlite 3.15.0 (newer default page/cache size):
cordova-sqlite-evcore-extbuild-free (0.8.2) custom with sqlite 3.15.0 (newer default page/cache size), FTS5 and JSON1 enabled:
cordova-sqlite-storage (1.4.8) custom with sqlite 3.15.0, older default page/cache size, FTS5 and JSON1 enabled:
Web SQL repeated:
Web SQL repeated extra:
cordova-sqlite-storage 1.4.8 (sqlite 3.8.10.2 with older default page/cache size) repeated:
cordova-sqlite-storage 1.4.8 with built-in android.database implementation (androidDatabaseImplementation: 2 setting) repeated:
cordova-sqlite-evcore-extbuild-free 0.8.2 (sqlite 3.12.2 with newer default page/cache size) repeated:
cordova-sqlite-storage (1.4.8) custom with sqlite 3.15.0 (newer default page/cache size) repeated:
cordova-sqlite-storage (1.4.8) custom with sqlite 3.15.0, older default page/cache size repeated:
cordova-sqlite-storage (1.4.8) custom with sqlite 3.15.0, older default page/cache size, FTS5 and JSON1 repeated:
cordova-sqlite-evcore-extbuild-free (0.8.2) custom with sqlite 3.15.0 (newer default page/cache size) repeated:
cordova-sqlite-evcore-extbuild-free (0.8.2) custom with sqlite 3.15.0 (newer default page/cache size), FTS5 and JSON1 enabled repeated:
extra preliminary results: cordova-plugin-sqlite-2 1.0.4 (built-in android.database implementation):
cordova-sqlcipher-adapter 0.1.8 (SQLCipher for Android 3.5.4) with no encryption key used:
|
Results of testing Cordova-sqlite-perftest 0.0.3 release build on new iOS device: iPhone 5S with iOS 10.0.2 (device reserved for testing) Rebooted before the following tests: Web SQL:
cordova-plugin-sqlite-2 1.0.4 (built-in sqlite3 library):
cordova-sqlite-storage 1.4.8 (sqlite 3.8.10.2 with older default page/cache size):
cordova-sqlite-evcore-extbuild-free 0.8.2 (sqlite 3.14.0 with newer default page/cache size, no JSON enhancement for iOS):
cordova-sqlite-evplus-legacy-attach-detach-free 0.8.2-pre2 (sqlite 3.8.10.2 with older default page/cache size, flat JSON enhancement for iOS):
cordova-sqlite-storage (1.4.8) custom with sqlite 3.15.0, older default page/cache size, FTS5 and JSON1 enabled:
cordova-sqlite-storage (1.4.8) custom with sqlite apple-osx 06014163 "3.15", older default page/cache size, FTS5 and JSON1 enabled:
cordova-sqlite-storage (1.4.8) custom with sqlite apple-osx 06014163 "3.15", newer default page/cache size, FTS5 and JSON1 enabled:
cordova-sqlite-evplus-legacy-attach-detach-free (0.8.2-pre2) flat JSON enhancement, custom with sqlite 3.15.0 (newer default page/cache size); FTS5, JSON1, and other flags:
cordova-sqlite-evplus-legacy-attach-detach-free (0.8.2-pre2) flat JSON enhancement, custom with sqlite apple-osx 06014163 "3.15" (newer default page/cache size); FTS5, JSON1, and other flags:
Web SQL repeated:
cordova-plugin-sqlite-2 1.0.4 (built-in sqlite3 library) repeated:
cordova-sqlite-storage 1.4.8 (sqlite 3.8.10.2 with older default page/cache size) repeated:
cordova-sqlite-evcore-extbuild-free 0.8.2 (sqlite 3.14.0 with newer default page/cache size, no JSON enhancement for iOS) repeated:
cordova-sqlite-evplus-legacy-attach-detach-free 0.8.2-pre2 (sqlite 3.8.10.2 with older default page/cache size, flat JSON enhancement for iOS) repeated:
cordova-sqlite-storage (1.4.8) custom with sqlite 3.15.0, older default page/cache size, FTS5 and JSON1 enabled repeated:
cordova-sqlite-storage (1.4.8) custom with sqlite apple-osx 06014163 "3.15", older default page/cache size, FTS5 and JSON1 enabled repeated:
cordova-sqlite-storage (1.4.8) custom with sqlite apple-osx 06014163 "3.15", newer default page/cache size, FTS5 and JSON1 enabled repeated:
cordova-sqlite-evplus-legacy-attach-detach-free (0.8.2-pre2) flat JSON enhancement, custom with sqlite 3.15.0 (newer default page/cache size); FTS5, JSON1, and other flags repeated:
cordova-sqlite-evplus-legacy-attach-detach-free (0.8.2-pre2) flat JSON enhancement, custom with sqlite apple-osx 06014163 "3.15" (newer default page/cache size); FTS5, JSON1, and other flags repeated:
|
Results of testing Cordova-sqlite-perftest 0.0.3 release build on Windows Mobile 10 device Rebooted before the following tests: cordova-sqlite-storage 1.4.8 (sqlite 3.8.10.2 with older default page/cache size):
cordova-sqlite-evcore-extbuild-free 0.8.2 (sqlite 3.14.0 with newer default page/cache size, no performance/stability enhancement for Windows:
cordova-sqlite-storage (1.4.8) custom with sqlite 3.15.0, older default page/cache size, FTS5 and JSON1 enabled:
cordova-sqlite-storage (1.4.8) custom with sqlite 3.15.0, newer default page/cache size, FTS5 and JSON1 enabled:
cordova-sqlite-storage 1.4.8 (sqlite 3.8.10.2 with older default page/cache size) (repeated):
cordova-sqlite-evcore-extbuild-free 0.8.2 (sqlite 3.14.0 with newer default page/cache size, no performance/stability enhancement for Windows (repeated):
cordova-sqlite-storage (1.4.8) custom with sqlite 3.15.0, older default page/cache size, FTS5 and JSON1 enabled (repeated):
NOTE: In this case Visual Studio detached prematurely and the test was manually restarted. cordova-sqlite-storage (1.4.8) custom with sqlite 3.15.0, older default page/cache size, FTS5 and JSON1 enabled (repeated again):
cordova-sqlite-storage (1.4.8) custom with sqlite 3.15.0, newer default page/cache size, FTS5 and JSON1 enabled (repeated):
Additional observation: when I ran the perftest on a busy Windows host (x86 build) before today I noticed that the "repeated read/update test" took much longer. I may run the comparison cases on the Windows host at some point. I think this is consistent with the observation that the "repeated read/update test" was also especially slow on my Acer mobile (which has a number of other apps running). Moving forward I think better conclusions can be drawn from the results on my dedicated test devices. |
Some general observations and conclusions so far:
Testing TODO: The existing "repeated update/read" test covers a situation that may not be typical. I would like to find a better repeated read/write performance test case. Next steps:
|
Here are the results I get when running https://github.com/brodybits/Cordova-sqlite-perftest on Android with cordova-sqlite-storage (built with sqlite 3.8.10.2) and this version (built with sqlite 3.12.2):
Device: Acer Z520 (dual-SIM) with Android 4.4.2
Rebooted before the following tests:
cordova-sqlite-storage 1.4.7 (sqlite 3.8.10.2):
cordova-sqlite-evcore-extbuild-free 0.8.1 (sqlite 3.12.2):
cordova-sqlite-storage 1.4.7 (sqlite 3.8.10.2) repeated:
cordova-sqlite-evcore-extbuild-free 0.8.1 (sqlite 3.12.2) repeated:
So far the bulk insert and volume read tests execute on Android in less than half the time in this plugin version compared to cordova-sqlite-storage.
Next steps:
The text was updated successfully, but these errors were encountered: