From 0b42f070a19e8b124471987cbd2357d7c412cca0 Mon Sep 17 00:00:00 2001 From: mmoto Date: Sun, 11 Nov 2018 22:07:47 +0200 Subject: [PATCH 1/2] Test types QUERY_INTEGER and QUERY_INTEGER_INDEXED were added to RealmPerfTest.java with corresponding test methods. --- .../performanceapp/realm/RealmPerfTest.java | 71 +++++++++++++++++++ build.gradle | 2 +- 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/objectbox/performanceapp/realm/RealmPerfTest.java b/app/src/main/java/io/objectbox/performanceapp/realm/RealmPerfTest.java index 9324772..bf1b232 100644 --- a/app/src/main/java/io/objectbox/performanceapp/realm/RealmPerfTest.java +++ b/app/src/main/java/io/objectbox/performanceapp/realm/RealmPerfTest.java @@ -72,6 +72,12 @@ public void run(TestType type) { case TestType.QUERY_STRING_INDEXED: runQueryByStringIndexed(); break; + case TestType.QUERY_INTEGER: + runQueryByInteger(); + break; + case TestType.QUERY_INTEGER_INDEXED: + runQueryByIntegerIndexed(); + break; case TestType.QUERY_ID: runQueryById(false); break; @@ -303,6 +309,71 @@ private void runQueryByStringIndexed() { log("Entities found: " + entitiesFound); } + + private void runQueryByIntegerIndexed() { + if (numberEntities > 10000) { + log("Reduce number of entities to 10000 to avoid extremely long test runs"); + return; + } + List entities = new ArrayList<>(numberEntities); + for (int i = 0; i < numberEntities; i++) { + entities.add(createEntityIndexed(i)); + } + + startBenchmark("insert"); + realm.beginTransaction(); + realm.insert(entities); + realm.commitTransaction(); + stopBenchmark(); + + final int[] valuesToLookup = new int[numberEntities]; + for (int i = 0; i < numberEntities; i++) { + valuesToLookup[i] = entities.get(random.nextInt(numberEntities)).getSimpleInt(); + } + + startBenchmark("query"); + long entitiesFound = 0; + for (int i = 0; i < numberEntities; i++) { + List result = realm.where(SimpleEntityIndexed.class).equalTo("simpleInt", valuesToLookup[i]).findAll(); + accessAllIndexed(result); + entitiesFound += result.size(); + } + stopBenchmark(); + log("Entities found: " + entitiesFound); + } + + private void runQueryByInteger() { + if (numberEntities > 10000) { + log("Reduce number of entities to 10000 to avoid extremely long test runs"); + return; + } + List entities = new ArrayList<>(numberEntities); + for (int i = 0; i < numberEntities; i++) { + entities.add(createEntity(i, false)); + } + + startBenchmark("insert"); + realm.beginTransaction(); + realm.insert(entities); + realm.commitTransaction(); + stopBenchmark(); + + final int[] valuesToLookup = new int[numberEntities]; + for (int i = 0; i < numberEntities; i++) { + valuesToLookup[i] = entities.get(random.nextInt(numberEntities)).getSimpleInt(); + } + + startBenchmark("query"); + long entitiesFound = 0; + for (int i = 0; i < numberEntities; i++) { + List result = realm.where(SimpleEntity.class).equalTo("simpleInt", valuesToLookup[i]).findAll(); + accessAll(result); + entitiesFound += result.size(); + } + stopBenchmark(); + log("Entities found: " + entitiesFound); + } + private void runQueryById(boolean randomIds) { List entities = new ArrayList<>(numberEntities); for (int i = 0; i < numberEntities; i++) { diff --git a/build.gradle b/build.gradle index a88b3fd..ecd45f4 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.4' + classpath 'com.android.tools.build:gradle:3.2.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files From 528c064ffdea2b204406adef1bf0199361e5ec84 Mon Sep 17 00:00:00 2001 From: mmoto Date: Sun, 11 Nov 2018 22:10:39 +0200 Subject: [PATCH 2/2] Build tools grade plugin version was reverted back. --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index ecd45f4..a88b3fd 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:3.1.4' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files