#android-orm-benchmark
##Summary
ORM-Benchmark is an Android application built in Eclipse that benchmarks the following against each other:
The benchmark runs the following tasks:
- CREATE_DB - Creation of database structure
- WRITE_DATA - Writing 1000 'user' objects and 10000 'message' objects
- READ_DATA - Read all 10000 'message' objects in the table
- READ_INDEXED - Read an indexed field (the 5000th 'message' in the table)
- READ_SEARCH - Query the first 100 rows that matches a search term (using LIKE)
- DROP_DB - Drop database strucuture
Each task is run 5 times, and the application reports the average time for each in milliseconds.
##Sample Output
Building and running the ORM-Benchmark project produces output similar to that below.
- The times are in milliseconds.
- The results are shown on the device and are also logged to Logcat.
The results below combine the in-memory database results with the on disk database results side by side. They are from a Nexus 4 on 20th Dec 2013, and we've put an "M" in front of the tests for the in-memory results.
Task CREATE_DB M RAW - Avg: 4 RAW - Avg: 230 M ORMLite - Avg: 6 ORMLite - Avg: 233 M GreenDAO - Avg: 3 GreenDAO - Avg: 163 Task WRITE_DATA M RAW - Avg: 2925 RAW - Avg: 3281 M ORMLite - Avg: 6898 ORMLite - Avg: 7203 M GreenDAO - Avg: 1960 GreenDAO - Avg: 2470 Task READ_DATA M RAW - Avg: 803 RAW - Avg: 808 M ORMLite - Avg: 1656 ORMLite - Avg: 1729 M GreenDAO - Avg: 1183 GreenDAO - Avg: 1186 Task READ_INDEXED M RAW - Avg: 1 RAW - Avg: 1 M ORMLite - Avg: 2 ORMLite - Avg: 3 M GreenDAO - Avg: 1 GreenDAO - Avg: 1 Task READ_SEARCH M RAW - Avg: 8 RAW - Avg: 8 M ORMLite - Avg: 119 ORMLite - Avg: 156 M GreenDAO - Avg: 7 GreenDAO - Avg: 6 Task DROP_DB M RAW - Avg: 8 RAW - Avg: 515 M ORMLite - Avg: 10 ORMLite - Avg: 558 M GreenDAO - Avg: 8 GreenDAO - Avg: 369
##Screenshots
After pressing "Run Benchmark" you can press "Show Results" to see the results:
##Technical Reference ###Customizing Benchmark Tests
- Enable/disable the usage of in-memory SQLite databases. Check MainActivity#USE_IN_MEMORY_DB
- Number of times to run the tests. Check MainActivity#NUM_ITERATIONS
- Implementing your own BenchmarkExecutable you can add more tests.
- Search term. Check BenchmarkExecutable#SEARCH_TERM
- Search limit. Check BenchmarkExecutable#SEARCH_LIMIT
- Number of users to be saved into the db. Check BenchmarkExecutable#NUM_USER_INSERTS
- Number of messages to be saved into the db. Check BenchmarkExecutable#NUM_MESSAGE_INSERTS
- Number of messages with readers. Check BenchmarkExecutable#NUM_MESSAGES_WITH_READERS
- Number of reades on messages. Check BenchmarkExecutable#NUM_READERS
###Changing The GreenDao Tests
GreenDao requires a separate project to generate the source code for database entities and DAOs. The ORM-Benchmark-GreenDAO-Generator project is a Java application that you can run to regenerate the database definitions. You only need to do this if you want to change the GreenDao database model!