summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/tests/coretests/src/android/database/NewDatabasePerformanceTestSuite.java1
-rw-r--r--core/tests/coretests/src/android/database/NewDatabasePerformanceTests.java491
-rwxr-xr-xcore/tests/coretests/src/android/database/run_newdb_perf_test.sh7
3 files changed, 209 insertions, 290 deletions
diff --git a/core/tests/coretests/src/android/database/NewDatabasePerformanceTestSuite.java b/core/tests/coretests/src/android/database/NewDatabasePerformanceTestSuite.java
index c9db034220ea..61566927433d 100644
--- a/core/tests/coretests/src/android/database/NewDatabasePerformanceTestSuite.java
+++ b/core/tests/coretests/src/android/database/NewDatabasePerformanceTestSuite.java
@@ -23,6 +23,7 @@ public class NewDatabasePerformanceTestSuite extends TestSuite {
TestSuite suite =
new TestSuite(NewDatabasePerformanceTestSuite.class.getName());
+ suite.addTestSuite(NewDatabasePerformanceTests.CreateTable100.class);
suite.addTestSuite(NewDatabasePerformanceTests.Insert100.class);
suite.addTestSuite(NewDatabasePerformanceTests.InsertIndexed100.class);
suite.addTestSuite(NewDatabasePerformanceTests.Select100.class);
diff --git a/core/tests/coretests/src/android/database/NewDatabasePerformanceTests.java b/core/tests/coretests/src/android/database/NewDatabasePerformanceTests.java
index f8d8e5e21d47..bcd90600b48a 100644
--- a/core/tests/coretests/src/android/database/NewDatabasePerformanceTests.java
+++ b/core/tests/coretests/src/android/database/NewDatabasePerformanceTests.java
@@ -34,8 +34,9 @@ import java.util.Random;
public class NewDatabasePerformanceTests {
private static final String TAG = "NewDatabasePerformanceTests";
- // Edit this to change the test run times. The original is 100.
- private static final int SIZE_MULTIPLIER = 100;
+ private static final int DATASET_SIZE = 100; // Size of dataset to use for testing
+ private static final int FAST_OP_MULTIPLIER = 25;
+ private static final int FAST_OP_COUNT = FAST_OP_MULTIPLIER * DATASET_SIZE;
public static class PerformanceBase extends TestCase
implements PerformanceTestCase {
@@ -50,16 +51,21 @@ public class NewDatabasePerformanceTests {
if (mDatabaseFile.exists()) {
mDatabaseFile.delete();
}
- mDatabase =
- SQLiteDatabase.openOrCreateDatabase(mDatabaseFile.getPath(),
- null);
+ mDatabase = SQLiteDatabase.openOrCreateDatabase(mDatabaseFile.getPath(), null);
assertTrue(mDatabase != null);
mDatabase.setVersion(CURRENT_DATABASE_VERSION);
+ mDatabase.beginTransactionNonExclusive();
+ prepareForTest();
+ mDatabase.setTransactionSuccessful();
+ mDatabase.endTransaction();
mSetupFinishedTime = System.currentTimeMillis();
Log.i(TAG, "Setup for " + getClass().getSimpleName() + " took "
+ (mSetupFinishedTime - setupStarted) + " ms");
}
+ protected void prepareForTest() {
+ }
+
public void tearDown() {
long duration = System.currentTimeMillis() - mSetupFinishedTime;
Log.i(TAG, "Test " + getClass().getSimpleName() + " took " + duration + " ms");
@@ -76,7 +82,7 @@ public class NewDatabasePerformanceTests {
return 0;
}
- public String numberName(int number) {
+ String numberName(int number) {
String result = "";
if (number >= 1000) {
@@ -106,36 +112,50 @@ public class NewDatabasePerformanceTests {
return result;
}
+
+ void checkCursor(Cursor c) {
+ c.getColumnCount();
+ c.close();
+ }
}
/**
- * Test 100 inserts.
+ * Test CREATE SIZE tables with 1 row.
*/
+ public static class CreateTable100 extends PerformanceBase {
+ public void testRun() {
+ for (int i = 0; i < DATASET_SIZE; i++) {
+ String t = "t" + i;
+ mDatabase.execSQL("CREATE TABLE " + t + "(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("INSERT INTO " + t + " VALUES(" + i + "," + i + ",'"
+ + numberName(i) + "')");
+ }
+ }
+ }
+ /**
+ * Test 100 inserts.
+ */
public static class Insert100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
-
- private String[] statements = new String[SIZE];
+ private String[] mStatements = new String[DATASET_SIZE];
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
- statements[i] =
+ mStatements[i] =
"INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')";
}
- mDatabase
- .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
}
public void testRun() {
- for (int i = 0; i < SIZE; i++) {
- mDatabase.execSQL(statements[i]);
+ for (int i = 0; i < DATASET_SIZE; i++) {
+ mDatabase.execSQL(mStatements[i]);
}
}
}
@@ -145,30 +165,25 @@ public class NewDatabasePerformanceTests {
*/
public static class InsertIndexed100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
-
- private String[] statements = new String[SIZE];
+ private String[] mStatements = new String[DATASET_SIZE];
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
- statements[i] =
- "INSERT INTO t1 VALUES(" + i + "," + r + ",'"
- + numberName(r) + "')";
+ mStatements[i] = "INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ + numberName(r) + "')";
}
- mDatabase
- .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
mDatabase.execSQL("CREATE INDEX i1c ON t1(c)");
}
public void testRun() {
- for (int i = 0; i < SIZE; i++) {
- mDatabase.execSQL(statements[i]);
+ for (int i = 0; i < DATASET_SIZE; i++) {
+ mDatabase.execSQL(mStatements[i]);
}
}
}
@@ -176,41 +191,35 @@ public class NewDatabasePerformanceTests {
/**
* 100 SELECTs without an index
*/
-
public static class Select100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private static final int REPEAT_COUNT = 10;
private static final String[] COLUMNS = {"count(*)", "avg(b)"};
- private String[] where = new String[SIZE];
+ private String[] mWhere = new String[DATASET_SIZE];
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
mDatabase
.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
}
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int lower = i * 100;
int upper = (i + 10) * 100;
- where[i] = "b >= " + lower + " AND b < " + upper;
+ mWhere[i] = "b >= " + lower + " AND b < " + upper;
}
}
public void testRun() {
- for (int iter = 0; iter < REPEAT_COUNT; iter++) {
- for (int i = 0; i < SIZE; i++) {
- mDatabase
- .query("t1", COLUMNS, where[i], null, null, null, null);
- }
+ for (int i = 0; i < FAST_OP_COUNT; i++) {
+ checkCursor(mDatabase
+ .query("t1", COLUMNS, mWhere[i % DATASET_SIZE], null, null, null, null));
}
}
}
@@ -219,37 +228,32 @@ public class NewDatabasePerformanceTests {
* 100 SELECTs on a string comparison
*/
public static class SelectStringComparison100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private static final int REPEAT_COUNT = 10;
private static final String[] COLUMNS = {"count(*)", "avg(b)"};
- private String[] where = new String[SIZE];
+ private String[] mWhere = new String[DATASET_SIZE];
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
mDatabase
.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
}
- for (int i = 0; i < SIZE; i++) {
- where[i] = "c LIKE '" + numberName(i) + "'";
+ for (int i = 0; i < DATASET_SIZE; i++) {
+ mWhere[i] = "c LIKE '" + numberName(i) + "'";
}
}
public void testRun() {
- for (int iter = 0; iter < REPEAT_COUNT; iter++) {
- for (int i = 0; i < SIZE; i++) {
- mDatabase
- .query("t1", COLUMNS, where[i], null, null, null, null);
- }
+ for (int i = 0; i < FAST_OP_COUNT; i++) {
+ checkCursor(mDatabase
+ .query("t1", COLUMNS, mWhere[i % DATASET_SIZE], null, null, null, null));
}
}
}
@@ -258,40 +262,35 @@ public class NewDatabasePerformanceTests {
* 100 SELECTs with an index
*/
public static class SelectIndex100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private static final int REPEAT_COUNT = 10;
+ private static final int TABLE_SIZE = 100;
private static final String[] COLUMNS = {"count(*)", "avg(b)"};
- private String[] where = new String[SIZE];
+ private String[] mWhere = new String[TABLE_SIZE];
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- mDatabase
- .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
mDatabase.execSQL("CREATE INDEX i1b ON t1(b)");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < TABLE_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
}
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < TABLE_SIZE; i++) {
int lower = i * 100;
int upper = (i + 10) * 100;
- where[i] = "b >= " + lower + " AND b < " + upper;
+ mWhere[i] = "b >= " + lower + " AND b < " + upper;
}
}
public void testRun() {
- for (int iter = 0; iter < REPEAT_COUNT; iter++) {
- for (int i = 0; i < SIZE; i++) {
- mDatabase
- .query("t1", COLUMNS, where[i], null, null, null, null);
- }
+ for (int i = 0; i < FAST_OP_COUNT; i++) {
+ checkCursor(mDatabase
+ .query("t1", COLUMNS, mWhere[i % TABLE_SIZE], null, null, null, null));
}
}
}
@@ -300,27 +299,22 @@ public class NewDatabasePerformanceTests {
* INNER JOIN without an index
*/
public static class InnerJoin100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private static final int REPEAT_COUNT = 10;
private static final String[] COLUMNS = {"t1.a"};
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- mDatabase
- .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
- mDatabase
- .execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
}
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t2 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
@@ -328,9 +322,9 @@ public class NewDatabasePerformanceTests {
}
public void testRun() {
- for (int iter = 0; iter < REPEAT_COUNT; iter++) {
- mDatabase.query("t1 INNER JOIN t2 ON t1.b = t2.b", COLUMNS, null,
- null, null, null, null);
+ for (int i = 0; i < FAST_OP_COUNT; i++) {
+ checkCursor(mDatabase.query("t1 INNER JOIN t2 ON t1.b = t2.b", COLUMNS, null,
+ null, null, null, null));
}
}
}
@@ -340,29 +334,24 @@ public class NewDatabasePerformanceTests {
*/
public static class InnerJoinOneSide100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private static final int REPEAT_COUNT = 10;
private static final String[] COLUMNS = {"t1.a"};
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- mDatabase
- .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
- mDatabase
- .execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))");
mDatabase.execSQL("CREATE INDEX i1b ON t1(b)");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
}
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t2 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
@@ -370,9 +359,9 @@ public class NewDatabasePerformanceTests {
}
public void testRun() {
- for (int iter = 0; iter < REPEAT_COUNT; iter++) {
- mDatabase.query("t1 INNER JOIN t2 ON t1.b = t2.b", COLUMNS, null,
- null, null, null, null);
+ for (int i = 0; i < FAST_OP_COUNT; i++) {
+ checkCursor(mDatabase.query("t1 INNER JOIN t2 ON t1.b = t2.b", COLUMNS, null,
+ null, null, null, null));
}
}
}
@@ -381,29 +370,24 @@ public class NewDatabasePerformanceTests {
* INNER JOIN without an index on one side
*/
public static class InnerJoinNoIndex100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private static final int REPEAT_COUNT = 10;
private static final String[] COLUMNS = {"t1.a"};
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- mDatabase
- .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
- mDatabase
- .execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))");
mDatabase.execSQL("CREATE INDEX i1b ON t1(b)");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
}
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t2 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
@@ -411,9 +395,10 @@ public class NewDatabasePerformanceTests {
}
public void testRun() {
- for (int iter = 0; iter < REPEAT_COUNT; iter++) {
- mDatabase.query("t1 INNER JOIN t2 ON t1.c = t2.c", COLUMNS, null,
- null, null, null, null);
+ for (int i = 0; i < FAST_OP_COUNT; i++) {
+ checkCursor(mDatabase
+ .query("t1 INNER JOIN t2 ON t1.c = t2.c", COLUMNS, null, null, null, null,
+ null));
}
}
}
@@ -422,49 +407,44 @@ public class NewDatabasePerformanceTests {
* 100 SELECTs with subqueries. Subquery is using an index
*/
public static class SelectSubQIndex100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private static final int REPEAT_COUNT = 10;
private static final String[] COLUMNS = {"t1.a"};
- private String[] where = new String[SIZE];
+ private String[] mWhere = new String[DATASET_SIZE];
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- mDatabase
- .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
- mDatabase
- .execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))");
mDatabase.execSQL("CREATE INDEX i2b ON t2(b)");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
}
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t2 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
}
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int lower = i * 100;
int upper = (i + 10) * 100;
- where[i] =
+ mWhere[i] =
"t1.b IN (SELECT t2.b FROM t2 WHERE t2.b >= " + lower
+ " AND t2.b < " + upper + ")";
}
}
public void testRun() {
- for (int i = 0; i < SIZE; i++) {
- mDatabase
- .query("t1", COLUMNS, where[i], null, null, null, null);
+ for (int i = 0; i < FAST_OP_COUNT; i++) {
+ checkCursor(mDatabase
+ .query("t1", COLUMNS, mWhere[i % DATASET_SIZE], null, null, null, null));
}
}
}
@@ -473,38 +453,32 @@ public class NewDatabasePerformanceTests {
* 100 SELECTs on string comparison with Index
*/
public static class SelectIndexStringComparison100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private static final int REPEAT_COUNT = 10;
private static final String[] COLUMNS = {"count(*)", "avg(b)"};
- private String[] where = new String[SIZE];
+ private String[] mWhere = new String[DATASET_SIZE];
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- mDatabase
- .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
mDatabase.execSQL("CREATE INDEX i3c ON t1(c)");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
}
- for (int i = 0; i < SIZE; i++) {
- where[i] = "c LIKE '" + numberName(i) + "'";
+ for (int i = 0; i < DATASET_SIZE; i++) {
+ mWhere[i] = "c LIKE '" + numberName(i) + "'";
}
}
public void testRun() {
- for (int iter = 0; iter < REPEAT_COUNT; iter++) {
- for (int i = 0; i < SIZE; i++) {
- mDatabase
- .query("t1", COLUMNS, where[i], null, null, null, null);
- }
+ for (int i = 0; i < FAST_OP_COUNT; i++) {
+ checkCursor(mDatabase
+ .query("t1", COLUMNS, mWhere[i % DATASET_SIZE], null, null, null, null));
}
}
}
@@ -513,19 +487,15 @@ public class NewDatabasePerformanceTests {
* 100 SELECTs on integer
*/
public static class SelectInteger100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private static final int REPEAT_COUNT = 10;
private static final String[] COLUMNS = {"b"};
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- mDatabase
- .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
@@ -534,10 +504,8 @@ public class NewDatabasePerformanceTests {
}
public void testRun() {
- for (int iter = 0; iter < REPEAT_COUNT; iter++) {
- for (int i = 0; i < SIZE; i++) {
- mDatabase.query("t1", COLUMNS, null, null, null, null, null);
- }
+ for (int i = 0; i < FAST_OP_COUNT; i++) {
+ checkCursor(mDatabase.query("t1", COLUMNS, null, null, null, null, null));
}
}
}
@@ -546,19 +514,16 @@ public class NewDatabasePerformanceTests {
* 100 SELECTs on String
*/
public static class SelectString100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private static final int REPEAT_COUNT = 10;
private static final String[] COLUMNS = {"c"};
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
mDatabase
.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
@@ -566,10 +531,8 @@ public class NewDatabasePerformanceTests {
}
public void testRun() {
- for (int iter = 0; iter < REPEAT_COUNT; iter++) {
- for (int i = 0; i < SIZE; i++) {
- mDatabase.query("t1", COLUMNS, null, null, null, null, null);
- }
+ for (int i = 0; i < FAST_OP_COUNT; i++) {
+ mDatabase.query("t1", COLUMNS, null, null, null, null, null);
}
}
}
@@ -578,20 +541,17 @@ public class NewDatabasePerformanceTests {
* 100 SELECTs on integer with index
*/
public static class SelectIntegerIndex100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private static final int REPEAT_COUNT = 10;
private static final String[] COLUMNS = {"b"};
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
mDatabase
.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
mDatabase.execSQL("CREATE INDEX i1b on t1(b)");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
@@ -600,10 +560,8 @@ public class NewDatabasePerformanceTests {
}
public void testRun() {
- for (int iter = 0; iter < REPEAT_COUNT; iter++) {
- for (int i = 0; i < SIZE; i++) {
- mDatabase.query("t1", COLUMNS, null, null, null, null, null);
- }
+ for (int i = 0; i < FAST_OP_COUNT; i++) {
+ mDatabase.query("t1", COLUMNS, null, null, null, null, null);
}
}
}
@@ -612,20 +570,16 @@ public class NewDatabasePerformanceTests {
* 100 SELECTs on String with index
*/
public static class SelectIndexString100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private static final int REPEAT_COUNT = 10;
private static final String[] COLUMNS = {"c"};
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- mDatabase
- .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
mDatabase.execSQL("CREATE INDEX i1c ON t1(c)");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
@@ -633,10 +587,8 @@ public class NewDatabasePerformanceTests {
}
public void testRun() {
- for (int iter = 0; iter < REPEAT_COUNT; iter++) {
- for (int i = 0; i < SIZE; i++) {
- mDatabase.query("t1", COLUMNS, null, null, null, null, null);
- }
+ for (int i = 0; i < FAST_OP_COUNT; i++) {
+ checkCursor(mDatabase.query("t1", COLUMNS, null, null, null, null, null));
}
}
@@ -646,40 +598,33 @@ public class NewDatabasePerformanceTests {
* 100 SELECTs on String with starts with
*/
public static class SelectStringStartsWith100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private static final int REPEAT_COUNT = 10;
private static final String[] COLUMNS = {"c"};
- private String[] where = new String[SIZE];
+ private String[] mWhere = new String[DATASET_SIZE];
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- mDatabase
- .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
mDatabase.execSQL("CREATE INDEX i1c ON t1(c)");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
}
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
- where[i] = "c LIKE '" + numberName(r).substring(0, 1) + "*'";
+ mWhere[i] = "c LIKE '" + numberName(r).substring(0, 1) + "*'";
}
}
public void testRun() {
- for (int iter = 0; iter < REPEAT_COUNT; iter++) {
- for (int i = 0; i < SIZE; i++) {
- mDatabase
- .query("t1", COLUMNS, where[i], null, null, null, null);
- }
+ for (int i = 0; i < FAST_OP_COUNT; i++) {
+ mDatabase.query("t1", COLUMNS, mWhere[i % DATASET_SIZE], null, null, null, null);
}
}
}
@@ -688,18 +633,15 @@ public class NewDatabasePerformanceTests {
* 100 Deletes on an indexed table
*/
public static class DeleteIndexed100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- mDatabase
- .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
mDatabase.execSQL("CREATE INDEX i3c ON t1(c)");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
@@ -708,7 +650,7 @@ public class NewDatabasePerformanceTests {
}
public void testRun() {
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
mDatabase.delete("t1", null, null);
}
}
@@ -718,17 +660,13 @@ public class NewDatabasePerformanceTests {
* 100 Deletes
*/
public static class Delete100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
-
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- mDatabase
- .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
@@ -737,7 +675,7 @@ public class NewDatabasePerformanceTests {
}
public void testRun() {
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
mDatabase.delete("t1", null, null);
}
}
@@ -747,33 +685,30 @@ public class NewDatabasePerformanceTests {
* 100 DELETE's without an index with where clause
*/
public static class DeleteWhere100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private String[] where = new String[SIZE];
+ private String[] mWhere = new String[DATASET_SIZE];
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- mDatabase
- .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
}
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int lower = i * 100;
int upper = (i + 10) * 100;
- where[i] = "b >= " + lower + " AND b < " + upper;
+ mWhere[i] = "b >= " + lower + " AND b < " + upper;
}
}
public void testRun() {
- for (int i = 0; i < SIZE; i++) {
- mDatabase.delete("t1", where[i], null);
+ for (int i = 0; i < DATASET_SIZE; i++) {
+ mDatabase.delete("t1", mWhere[i], null);
}
}
}
@@ -782,34 +717,31 @@ public class NewDatabasePerformanceTests {
* 100 DELETE's with an index with where clause
*/
public static class DeleteIndexWhere100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private String[] where = new String[SIZE];
+ private String[] mWhere = new String[DATASET_SIZE];
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- mDatabase
- .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
mDatabase.execSQL("CREATE INDEX i1b ON t1(b)");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
}
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int lower = i * 100;
int upper = (i + 10) * 100;
- where[i] = "b >= " + lower + " AND b < " + upper;
+ mWhere[i] = "b >= " + lower + " AND b < " + upper;
}
}
public void testRun() {
- for (int i = 0; i < SIZE; i++) {
- mDatabase.delete("t1", where[i], null);
+ for (int i = 0; i < DATASET_SIZE; i++) {
+ mDatabase.delete("t1", mWhere[i], null);
}
}
}
@@ -818,30 +750,26 @@ public class NewDatabasePerformanceTests {
* 100 update's with an index with where clause
*/
public static class UpdateIndexWhere100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private String[] where = new String[SIZE];
- ContentValues[] mValues = new ContentValues[SIZE];
+ private String[] mWhere = new String[DATASET_SIZE];
+ ContentValues[] mValues = new ContentValues[DATASET_SIZE];
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- mDatabase
- .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
mDatabase.execSQL("CREATE INDEX i1b ON t1(b)");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
}
- for (int i = 0; i < SIZE; i++) {
-
+ for (int i = 0; i < DATASET_SIZE; i++) {
int lower = i * 100;
int upper = (i + 10) * 100;
- where[i] = "b >= " + lower + " AND b < " + upper;
+ mWhere[i] = "b >= " + lower + " AND b < " + upper;
ContentValues b = new ContentValues(1);
b.put("b", upper);
mValues[i] = b;
@@ -850,8 +778,8 @@ public class NewDatabasePerformanceTests {
}
public void testRun() {
- for (int i = 0; i < SIZE; i++) {
- mDatabase.update("t1", mValues[i], where[i], null);
+ for (int i = 0; i < DATASET_SIZE; i++) {
+ mDatabase.update("t1", mValues[i], mWhere[i], null);
}
}
}
@@ -860,29 +788,26 @@ public class NewDatabasePerformanceTests {
* 100 update's without an index with where clause
*/
public static class UpdateWhere100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private String[] where = new String[SIZE];
- ContentValues[] mValues = new ContentValues[SIZE];
+ private String[] mWhere = new String[DATASET_SIZE];
+ ContentValues[] mValues = new ContentValues[DATASET_SIZE];
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- mDatabase
- .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
+ numberName(r) + "')");
}
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int lower = i * 100;
int upper = (i + 10) * 100;
- where[i] = "b >= " + lower + " AND b < " + upper;
+ mWhere[i] = "b >= " + lower + " AND b < " + upper;
ContentValues b = new ContentValues(1);
b.put("b", upper);
mValues[i] = b;
@@ -890,8 +815,8 @@ public class NewDatabasePerformanceTests {
}
public void testRun() {
- for (int i = 0; i < SIZE; i++) {
- mDatabase.update("t1", mValues[i], where[i], null);
+ for (int i = 0; i < DATASET_SIZE; i++) {
+ mDatabase.update("t1", mValues[i], mWhere[i], null);
}
}
}
@@ -900,36 +825,31 @@ public class NewDatabasePerformanceTests {
* 100 selects for a String - contains 'e'
*/
public static class SelectStringContains100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private static final int REPEAT_COUNT = 10;
private static final String[] COLUMNS = {"t3.a"};
- private String[] where = new String[SIZE];
+ private String[] mWhere = new String[DATASET_SIZE];
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- mDatabase
- .execSQL("CREATE TABLE t3(a VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t3(a VARCHAR(100))");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t3 VALUES('"
+ numberName(r) + "')");
}
- for (int i = 0; i < SIZE; i++) {
- where[i] = "a LIKE '*e*'";
+ for (int i = 0; i < DATASET_SIZE; i++) {
+ mWhere[i] = "a LIKE '*e*'";
}
}
public void testRun() {
- for (int iter = 0; iter < REPEAT_COUNT; iter++) {
- for (int i = 0; i < SIZE; i++) {
- mDatabase.query("t3", COLUMNS, where[i], null, null, null, null);
- }
+ for (int i = 0; i < FAST_OP_COUNT; i++) {
+ checkCursor(mDatabase
+ .query("t3", COLUMNS, mWhere[i % DATASET_SIZE], null, null, null, null));
}
}
}
@@ -938,37 +858,32 @@ public class NewDatabasePerformanceTests {
* 100 selects for a String - contains 'e'-indexed table
*/
public static class SelectStringIndexedContains100 extends PerformanceBase {
- private static final int SIZE = SIZE_MULTIPLIER;
- private static final int REPEAT_COUNT = 10;
private static final String[] COLUMNS = {"t3.a"};
- private String[] where = new String[SIZE];
+ private String[] mWhere = new String[DATASET_SIZE];
@Override
- public void setUp() {
- super.setUp();
+ protected void prepareForTest() {
Random random = new Random(42);
- mDatabase
- .execSQL("CREATE TABLE t3(a VARCHAR(100))");
+ mDatabase.execSQL("CREATE TABLE t3(a VARCHAR(100))");
mDatabase.execSQL("CREATE INDEX i3a ON t3(a)");
- for (int i = 0; i < SIZE; i++) {
+ for (int i = 0; i < DATASET_SIZE; i++) {
int r = random.nextInt(100000);
mDatabase.execSQL("INSERT INTO t3 VALUES('"
+ numberName(r) + "')");
}
- for (int i = 0; i < SIZE; i++) {
- where[i] = "a LIKE '*e*'";
+ for (int i = 0; i < DATASET_SIZE; i++) {
+ mWhere[i] = "a LIKE '*e*'";
}
}
public void testRun() {
- for (int iter = 0; iter < REPEAT_COUNT; iter++) {
- for (int i = 0; i < SIZE; i++) {
- mDatabase.query("t3", COLUMNS, where[i], null, null, null, null);
- }
+ for (int i = 0; i < FAST_OP_COUNT; i++) {
+ checkCursor(mDatabase
+ .query("t3", COLUMNS, mWhere[i % DATASET_SIZE], null, null, null, null));
}
}
}
diff --git a/core/tests/coretests/src/android/database/run_newdb_perf_test.sh b/core/tests/coretests/src/android/database/run_newdb_perf_test.sh
index 10a62e6a00de..c5b2c97b572f 100755
--- a/core/tests/coretests/src/android/database/run_newdb_perf_test.sh
+++ b/core/tests/coretests/src/android/database/run_newdb_perf_test.sh
@@ -17,8 +17,11 @@ make -j44 FrameworksCoreTests
adb install -r -g ${ANDROID_PRODUCT_OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
adb logcat -c
-echo "Running benchmark 5 times"
-for i in {1..5}
+# by default run 5 times
+RUN_N=${1:-5}
+echo "Running benchmark $RUN_N times"
+
+for (( i=0; i<$RUN_N; i++ ))
do
adb shell am instrument -e class 'android.database.NewDatabasePerformanceTestSuite' -w 'com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner'
done