19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
170dc59e78e18493aecd37427531d093e800846c3eBrett Chabotpackage android.database;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.ContentValues;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.sqlite.SQLiteDatabase;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.PerformanceTestCase;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.TestCase;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.File;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.Random;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Database Performance Tests
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class NewDatabasePerformanceTests {
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
353f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    // Edit this to change the test run times.  The original is 100.
363f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    final static int kMultiplier = 1;
373f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
383f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class PerformanceBase extends TestCase
393f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    implements PerformanceTestCase {
403f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        protected static final int CURRENT_DATABASE_VERSION = 42;
413f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        protected SQLiteDatabase mDatabase;
423f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        protected File mDatabaseFile;
433f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
443f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
453f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabaseFile = new File("/sdcard", "perf_database_test.db");
463f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            if (mDatabaseFile.exists()) {
473f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabaseFile.delete();
483f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
493f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase =
503f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                    SQLiteDatabase.openOrCreateDatabase(mDatabaseFile.getPath(),
513f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                            null);
523f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            assertTrue(mDatabase != null);
533f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.setVersion(CURRENT_DATABASE_VERSION);
543f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
553f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
563f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void tearDown() {
573f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.close();
583f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabaseFile.delete();
593f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
603f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
613f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public boolean isPerformanceOnly() {
623f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            return true;
633f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
643f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
653f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        // These tests can only be run once.
663f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public int startPerformance(Intermediates intermediates) {
673f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            return 0;
683f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
693f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
703f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public String numberName(int number) {
713f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            String result = "";
723f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
733f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            if (number >= 1000) {
743f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                result += numberName((number / 1000)) + " thousand";
753f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                number = (number % 1000);
763f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
773f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                if (number > 0) result += " ";
783f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
793f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
803f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            if (number >= 100) {
813f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                result += ONES[(number / 100)] + " hundred";
823f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                number = (number % 100);
833f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
843f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                if (number > 0) result += " ";
853f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
863f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
873f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            if (number >= 20) {
883f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                result += TENS[(number / 10)];
893f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                number = (number % 10);
903f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
913f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                if (number > 0) result += " ";
923f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
933f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
943f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            if (number > 0) {
953f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                result += ONES[number];
963f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
973f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
983f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            return result;
993f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1023f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
1033f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     * Test 1000 inserts.
1043f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1063f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class Insert1000 extends PerformanceBase {
1073f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 10 * kMultiplier;
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1093f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] statements = new String[SIZE];
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1113f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
1123f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
1133f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
1143f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1163f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
1173f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
1183f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                statements[i] =
1193f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        "INSERT INTO t1 VALUES(" + i + "," + r + ",'"
1203f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                                + numberName(r) + "')";
1213f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1233f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
1243f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
1253f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1273f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
1283f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
1293f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL(statements[i]);
1303f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
1313f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1343f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
1353f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     * Test 1000 inserts into an indexed table.
1363f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
1373f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
1383f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class InsertIndexed1000 extends PerformanceBase {
1393f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 10 * kMultiplier;
1403f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
1413f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] statements = new String[SIZE];
1423f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
1433f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
1443f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
1453f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
1463f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
1473f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
1483f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
1493f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
1503f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                statements[i] =
1513f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        "INSERT INTO t1 VALUES(" + i + "," + r + ",'"
1523f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                                + numberName(r) + "')";
1533f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
1543f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
1553f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
1563f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
1573f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.execSQL("CREATE INDEX i1c ON t1(c)");
1583f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
1593f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
1603f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
1613f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
1623f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL(statements[i]);
1633f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
1643f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1673f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
1683f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     * 100 SELECTs without an index
1693f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
1703f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
1713f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class Select100 extends PerformanceBase {
1723f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 1 * kMultiplier;
1733f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"count(*)", "avg(b)"};
1743f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
1753f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] where = new String[SIZE];
1763f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
1773f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
1783f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
1793f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
1803f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
1813f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
1823f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
1833f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
1843f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
1853f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
1863f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
1873f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
1883f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
1893f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
1903f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
1913f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
1923f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int lower = i * 100;
1933f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int upper = (i + 10) * 100;
1943f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                where[i] = "b >= " + lower + " AND b < " + upper;
1953f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
1963f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
1973f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
1983f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
1993f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
2003f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase
2013f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                .query("t1", COLUMNS, where[i], null, null, null, null);
2023f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
2033f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2063f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
2073f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     * 100 SELECTs on a string comparison
2083f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
2093f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
2103f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class SelectStringComparison100 extends PerformanceBase {
2113f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 1 * kMultiplier;
2123f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"count(*)", "avg(b)"};
2133f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
2143f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] where = new String[SIZE];
2153f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
2163f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
2173f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
2183f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
2193f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
2203f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
2213f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
2223f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
2233f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
2243f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
2253f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
2263f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
2273f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
2283f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
2293f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
2303f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
2313f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                where[i] = "c LIKE '" + numberName(i) + "'";
2323f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
2333f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
2343f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
2353f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
2363f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
2373f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase
2383f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                .query("t1", COLUMNS, where[i], null, null, null, null);
2393f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
2403f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2433f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
2443f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     * 100 SELECTs with an index
2453f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
2463f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
2473f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class SelectIndex100 extends PerformanceBase {
2483f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 1 * kMultiplier;
2493f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"count(*)", "avg(b)"};
2503f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
2513f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] where = new String[SIZE];
2523f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
2533f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
2543f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
2553f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
2563f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
2573f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
2583f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
2593f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
2603f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.execSQL("CREATE INDEX i1b ON t1(b)");
2613f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
2623f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
2633f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
2643f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
2653f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
2663f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
2673f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
2683f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
2693f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int lower = i * 100;
2703f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int upper = (i + 10) * 100;
2713f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                where[i] = "b >= " + lower + " AND b < " + upper;
2723f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
2733f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
2743f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
2753f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
2763f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
2773f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase
2783f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                .query("t1", COLUMNS, where[i], null, null, null, null);
2793f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
2803f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2833f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
2843f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  INNER JOIN without an index
2853f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
2863f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
2873f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class InnerJoin100 extends PerformanceBase {
2883f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 1 * kMultiplier;
2893f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"t1.a"};
2903f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
2913f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
2923f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
2933f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
2943f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
2953f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
2963f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
2973f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
2983f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
2993f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))");
3003f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
3013f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
3023f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
3033f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
3043f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
3053f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
3063f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
3073f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
3083f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
3093f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t2 VALUES(" + i + "," + r + ",'"
3103f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
3113f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
3123f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
3133f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
3143f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
3153f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.query("t1 INNER JOIN t2 ON t1.b = t2.b", COLUMNS, null,
3163f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                    null, null, null, null);
3173f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3203f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
3213f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  INNER JOIN without an index on one side
3223f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
3233f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
3243f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class InnerJoinOneSide100 extends PerformanceBase {
3253f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 1 * kMultiplier;
3263f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"t1.a"};
3273f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
3283f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
3293f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
3303f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
3313f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
3323f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
3333f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
3343f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
3353f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
3363f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))");
3373f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
3383f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.execSQL("CREATE INDEX i1b ON t1(b)");
3393f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
3403f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
3413f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
3423f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
3433f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
3443f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
3453f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
3463f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
3473f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
3483f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t2 VALUES(" + i + "," + r + ",'"
3493f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
3503f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
3513f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
3523f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
3533f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
3543f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.query("t1 INNER JOIN t2 ON t1.b = t2.b", COLUMNS, null,
3553f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                    null, null, null, null);
3563f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3593f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
3603f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  INNER JOIN without an index on one side
3613f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
3623f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
3633f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class InnerJoinNoIndex100 extends PerformanceBase {
3643f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 1 * kMultiplier;
3653f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"t1.a"};
3663f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
3673f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
3683f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
3693f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
3703f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
3713f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
3723f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
3733f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
3743f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
3753f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))");
3763f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
3773f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.execSQL("CREATE INDEX i1b ON t1(b)");
3783f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
3793f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
3803f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
3813f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
3823f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
3833f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
3843f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
3853f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
3863f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
3873f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t2 VALUES(" + i + "," + r + ",'"
3883f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
3893f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
3903f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
3913f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
3923f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
3933f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.query("t1 INNER JOIN t2 ON t1.c = t2.c", COLUMNS, null,
3943f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                    null, null, null, null);
3953f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
3969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
3979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
3983f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
3993f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  100 SELECTs with subqueries. Subquery is using an index
4003f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
4013f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
4023f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class SelectSubQIndex100 extends PerformanceBase {
4033f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 1 * kMultiplier;
4043f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"t1.a"};
4053f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
4063f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] where = new String[SIZE];
4073f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
4083f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
4093f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
4103f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
4113f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
4123f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
4133f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
4143f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
4153f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
4163f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100))");
4173f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
4183f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.execSQL("CREATE INDEX i2b ON t2(b)");
4193f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
4203f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
4213f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
4223f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
4233f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
4243f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
4253f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
4263f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
4273f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
4283f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t2 VALUES(" + i + "," + r + ",'"
4293f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
4303f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
4313f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
4323f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
4333f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int lower = i * 100;
4343f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int upper = (i + 10) * 100;
4353f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                where[i] =
4363f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        "t1.b IN (SELECT t2.b FROM t2 WHERE t2.b >= " + lower
4373f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + " AND t2.b < " + upper + ")";
4383f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
4393f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
4403f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
4413f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
4423f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
4433f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase
4443f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                .query("t1", COLUMNS, where[i], null, null, null, null);
4453f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
4463f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4493f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
4503f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  100 SELECTs on string comparison with Index
4513f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
4523f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
4533f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class SelectIndexStringComparison100 extends PerformanceBase {
4543f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 1 * kMultiplier;
4553f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"count(*)", "avg(b)"};
4563f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
4573f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] where = new String[SIZE];
4583f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
4593f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
4603f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
4613f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
4623f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
4633f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
4643f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
4653f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
4663f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.execSQL("CREATE INDEX i3c ON t1(c)");
4673f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
4683f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
4693f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
4703f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
4713f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
4723f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
4733f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
4743f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
4753f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                where[i] = "c LIKE '" + numberName(i) + "'";
4763f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
4773f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
4783f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
4793f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
4803f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
4813f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase
4823f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                .query("t1", COLUMNS, where[i], null, null, null, null);
4833f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
4843f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
4859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
4869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4873f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
4883f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  100 SELECTs on integer
4893f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
4909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4913f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class SelectInteger100 extends PerformanceBase {
4923f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 1 * kMultiplier;
4933f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"b"};
4949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
4953f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
4963f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
4973f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
4983f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5003f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
5013f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5033f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
5043f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
5053f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
5063f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
5073f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5093f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5113f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
5123f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
5133f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.query("t1", COLUMNS, null, null, null, null, null);
5143f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
5153f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5183f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
5193f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  100 SELECTs on String
5203f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5223f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class SelectString100 extends PerformanceBase {
5233f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 1 * kMultiplier;
5243f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"c"};
5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5263f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
5273f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
5283f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
5293f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5313f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
5323f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5343f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
5353f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
5363f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
5373f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
5383f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5403f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5423f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
5433f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
5443f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.query("t1", COLUMNS, null, null, null, null, null);
5453f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
5463f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5493f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
5503f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  100 SELECTs on integer with index
5513f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5533f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class SelectIntegerIndex100 extends PerformanceBase {
5543f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 1 * kMultiplier;
5553f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"b"};
5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5573f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
5583f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
5593f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
5603f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5623f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
5633f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
5643f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.execSQL("CREATE INDEX i1b on t1(b)");
5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5663f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
5673f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
5683f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
5693f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
5703f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5723f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5743f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
5753f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
5763f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.query("t1", COLUMNS, null, null, null, null, null);
5773f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
5783f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5813f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
5823f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  100 SELECTs on String with index
5833f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5853f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class SelectIndexString100 extends PerformanceBase {
5863f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 1 * kMultiplier;
5873f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"c"};
5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5893f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
5903f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
5913f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
5923f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5943f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
5953f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
5963f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.execSQL("CREATE INDEX i1c ON t1(c)");
5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
5983f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
5993f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
6003f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
6013f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
6023f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6043f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6063f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
6073f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
6083f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.query("t1", COLUMNS, null, null, null, null, null);
6093f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
6103f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6133f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
6143f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  100 SELECTs on String with starts with
6153f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6173f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class SelectStringStartsWith100 extends PerformanceBase {
6183f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 1 * kMultiplier;
6193f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"c"};
6203f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] where = new String[SIZE];
6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6223f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
6233f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
6243f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
6253f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6273f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
6283f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
6293f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.execSQL("CREATE INDEX i1c ON t1(c)");
6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6313f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
6323f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
6333f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
6343f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
6353f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6373f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
6383f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
6393f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                where[i] = "c LIKE '" + numberName(r).substring(0, 1) + "*'";
6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6413f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6433f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6453f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
6463f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
6473f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase
6483f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                .query("t1", COLUMNS, where[i], null, null, null, null);
6493f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
6503f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
6513f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    }
6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6533f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
6543f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  1000 Deletes on an indexed table
6553f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6573f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class DeleteIndexed1000 extends PerformanceBase {
6583f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 10 * kMultiplier;
6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6603f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
6613f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
6623f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
6633f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6653f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
6663f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
6673f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.execSQL("CREATE INDEX i3c ON t1(c)");
6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6693f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
6703f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
6713f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
6723f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
6733f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6753f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6773f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
6783f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
6793f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.delete("t1", null, null);
6803f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
6813f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6843f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
6853f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  1000 Deletes
6863f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6883f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class Delete1000 extends PerformanceBase {
6893f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 10 * kMultiplier;
6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6913f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
6923f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
6933f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
6943f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6963f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
6973f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
6993f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
7003f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
7013f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
7023f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
7033f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7053f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7073f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
7083f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
7093f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.delete("t1", null, null);
7103f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
7113f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
7129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
7139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7143f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
7153f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  1000 DELETE's without an index with where clause
7163f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
7173f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
7183f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class DeleteWhere1000 extends PerformanceBase {
7193f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 10 * kMultiplier;
7203f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] where = new String[SIZE];
7213f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
7223f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
7233f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
7243f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
7253f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
7263f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
7273f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
7283f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
7293f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
7303f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
7313f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
7323f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
7333f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
7343f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
7353f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
7363f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
7373f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int lower = i * 100;
7383f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int upper = (i + 10) * 100;
7393f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                where[i] = "b >= " + lower + " AND b < " + upper;
7403f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
7413f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
7423f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
7433f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
7443f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
7453f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.delete("t1", where[i], null);
7463f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
7473f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7503f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
7513f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  1000 DELETE's with an index with where clause
7523f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
7533f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
7543f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class DeleteIndexWhere1000 extends PerformanceBase {
7553f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 10 * kMultiplier;
7563f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] where = new String[SIZE];
7573f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
7583f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
7593f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
7603f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
7613f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
7623f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
7633f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
7643f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
7653f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.execSQL("CREATE INDEX i1b ON t1(b)");
7663f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
7673f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
7683f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
7693f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
7703f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
7713f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
7723f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
7733f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
7743f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int lower = i * 100;
7753f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int upper = (i + 10) * 100;
7763f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                where[i] = "b >= " + lower + " AND b < " + upper;
7773f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
7783f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
7793f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
7803f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
7813f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
7823f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.delete("t1", where[i], null);
7833f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
7843f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
7859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
7869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
7873f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
7883f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  1000 update's with an index with where clause
7893f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
7903f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
7913f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class UpdateIndexWhere1000 extends PerformanceBase {
7923f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 10 * kMultiplier;
7933f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] where = new String[SIZE];
7943f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        ContentValues[] mValues = new ContentValues[SIZE];
7953f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
7963f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
7973f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
7983f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
7993f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
8003f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8013f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
8023f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
8033f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.execSQL("CREATE INDEX i1b ON t1(b)");
8043f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8053f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
8063f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
8073f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
8083f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
8093f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
8103f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8113f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
8123f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8133f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int lower = i * 100;
8143f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int upper = (i + 10) * 100;
8153f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                where[i] = "b >= " + lower + " AND b < " + upper;
8163f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                ContentValues b = new ContentValues(1);
8173f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                b.put("b", upper);
8183f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mValues[i] = b;
8193f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8203f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
8213f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
8223f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8233f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
8243f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
8253f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.update("t1", mValues[i], where[i], null);
8263f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
8273f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
8289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
8299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8303f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
8313f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  1000 update's without an index with where clause
8323f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
8333f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8343f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class UpdateWhere1000 extends PerformanceBase {
8353f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 10 * kMultiplier;
8363f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] where = new String[SIZE];
8373f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        ContentValues[] mValues = new ContentValues[SIZE];
8383f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8393f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
8403f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
8413f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
8423f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
8433f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8443f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
8453f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100))");
8463f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8473f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
8483f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
8493f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t1 VALUES(" + i + "," + r + ",'"
8503f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
8513f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
8523f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8533f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
8543f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8553f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int lower = i * 100;
8563f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int upper = (i + 10) * 100;
8573f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                where[i] = "b >= " + lower + " AND b < " + upper;
8583f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                ContentValues b = new ContentValues(1);
8593f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                b.put("b", upper);
8603f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mValues[i] = b;
8613f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
8623f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
8633f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8643f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
8653f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
8663f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.update("t1", mValues[i], where[i], null);
8673f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
8683f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
8699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
8713f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
8723f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  10000 inserts for an integer
8733f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
8743f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8753f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class InsertInteger10000 extends PerformanceBase {
8763f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 100 * kMultiplier;
8773f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        ContentValues[] mValues = new ContentValues[SIZE];
8783f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8793f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
8803f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
8813f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
8823f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
8833f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8843f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
8853f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER)");
8863f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8873f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
8883f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
8893f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                ContentValues b = new ContentValues(1);
8903f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                b.put("a", r);
8913f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mValues[i] = b;
8923f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
8933f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
8943f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
8953f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
8963f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
8973f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.insert("t1", null, mValues[i]);
8983f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
8993f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
9009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
9019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9023f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
9033f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  10000 inserts for an integer -indexed table
9043f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
9053f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
9063f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class InsertIntegerIndex10000 extends PerformanceBase {
9073f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 100 * kMultiplier;
9083f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        ContentValues[] mValues = new ContentValues[SIZE];
9093f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
9103f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
9113f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
9123f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
9133f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
9143f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
9153f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
9163f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a INTEGER)");
9173f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.execSQL("CREATE INDEX i1a ON t1(a)");
9183f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
9193f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
9203f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
9213f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                ContentValues b = new ContentValues(1);
9223f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                b.put("a", r);
9233f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mValues[i] = b;
9243f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
9253f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
9263f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
9273f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
9283f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
9293f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.insert("t1", null, mValues[i]);
9303f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
9313f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
9329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
9339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9343f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
9353f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  10000 inserts for a String
9363f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
9373f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
9383f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class InsertString10000 extends PerformanceBase {
9393f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 100 * kMultiplier;
9403f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        ContentValues[] mValues = new ContentValues[SIZE];
9413f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
9423f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
9433f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
9443f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
9453f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
9463f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
9473f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
9483f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a VARCHAR(100))");
9493f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
9503f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
9513f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
9523f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                ContentValues b = new ContentValues(1);
9533f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                b.put("a", numberName(r));
9543f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mValues[i] = b;
9553f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
9563f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
9573f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
9583f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
9593f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
9603f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.insert("t1", null, mValues[i]);
9613f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
9623f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
9639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
9649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9653f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
9663f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  10000 inserts for a String - indexed table
9673f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
9683f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
9693f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class InsertStringIndexed10000 extends PerformanceBase {
9703f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 100 * kMultiplier;
9713f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        ContentValues[] mValues = new ContentValues[SIZE];
9723f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
9733f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
9743f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
9753f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
9763f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
9773f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
9783f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
9793f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t1(a VARCHAR(100))");
9803f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.execSQL("CREATE INDEX i1a ON t1(a)");
9813f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
9823f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
9833f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
9843f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                ContentValues b = new ContentValues(1);
9853f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                b.put("a", numberName(r));
9863f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mValues[i] = b;
9873f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
9883f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
9893f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
9903f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
9913f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
9923f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.insert("t1", null, mValues[i]);
9933f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
9943f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
9959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
9969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
9983f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
9993f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  10000 selects for a String -starts with
10003f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
10019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10023f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class SelectStringStartsWith10000 extends PerformanceBase {
10033f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 100 * kMultiplier;
10043f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"t3.a"};
10053f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] where = new String[SIZE];
10069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10073f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
10083f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
10093f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
10103f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
10119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10123f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
10133f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t3(a VARCHAR(100))");
10149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10153f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
10163f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
10173f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t3 VALUES('"
10183f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
10193f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
10209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10213f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
10223f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
10233f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                where[i] = "a LIKE '" + numberName(r).substring(0, 1) + "*'";
10249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10253f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
10263f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
10279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
10283f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
10293f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
10303f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.query("t3", COLUMNS, where[i], null, null, null, null);
10313f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
10323f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
10339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
10343f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
10353f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
10363f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  10000 selects for a String - indexed table -starts with
10373f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
10383f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
10393f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class SelectStringIndexedStartsWith10000 extends
10403f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    PerformanceBase {
10413f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 100 * kMultiplier;
10423f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"t3.a"};
10433f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] where = new String[SIZE];
10443f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
10453f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
10463f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
10473f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
10483f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
10493f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
10503f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
10513f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t3(a VARCHAR(100))");
10523f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.execSQL("CREATE INDEX i3a ON t3(a)");
10533f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
10543f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
10553f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
10563f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t3 VALUES('"
10573f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
10583f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
10593f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
10603f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
10613f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
10623f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                where[i] = "a LIKE '" + numberName(r).substring(0, 1) + "*'";
10633f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
10643f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
10653f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
10663f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
10673f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
10683f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
10693f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.query("t3", COLUMNS, where[i], null, null, null, null);
10703f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
10713f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
10729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
10733f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
10743f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
10753f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  10000 selects for an integer -
10763f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
10773f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
10783f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class SelectInteger10000 extends PerformanceBase {
10793f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 100 * kMultiplier;
10803f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"t4.a"};
10813f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] where = new String[SIZE];
10823f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
10833f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
10843f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
10853f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
10863f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
10873f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
10883f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
10893f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t4(a INTEGER)");
10903f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
10913f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
10923f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
10933f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t4 VALUES(" + r + ")");
10943f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int lower = i * 100;
10953f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int upper = (i + 10) * 100;
10963f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                where[i] = "a >= " + lower + " AND a < " + upper;
10973f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
10983f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
10993f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
11003f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
11013f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
11023f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.query("t4", COLUMNS, where[i], null, null, null, null);
11033f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
11043f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
11059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
11069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11073f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
11083f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  10000 selects for an integer -indexed table
11093f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
11109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11113f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class SelectIntegerIndexed10000 extends PerformanceBase {
11123f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 100 * kMultiplier;
11133f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"t4.a"};
11143f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] where = new String[SIZE];
11159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11163f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
11173f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
11183f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
11193f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
11209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11213f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
11223f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t4(a INTEGER)");
11233f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.execSQL("CREATE INDEX i4a ON t4(a)");
11249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11253f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
11263f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
11273f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t4 VALUES(" + r + ")");
11289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11293f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int lower = i * 100;
11303f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int upper = (i + 10) * 100;
11313f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                where[i] = "a >= " + lower + " AND a < " + upper;
11323f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
11339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11343f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
11359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11363f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
11373f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
11383f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.query("t4", COLUMNS, where[i], null, null, null, null);
11393f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
11403f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
11419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
11429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11443f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
11453f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  10000 selects for a String - contains 'e'
11463f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
11479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11483f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class SelectStringContains10000 extends PerformanceBase {
11493f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 100 * kMultiplier;
11503f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"t3.a"};
11513f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] where = new String[SIZE];
11529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11533f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
11543f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
11553f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
11563f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
11579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11583f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
11593f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t3(a VARCHAR(100))");
11609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11613f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
11623f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
11633f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t3 VALUES('"
11643f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
11653f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
11669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11673f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
11683f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                where[i] = "a LIKE '*e*'";
11699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11703f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
11713f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
11729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
11733f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
11743f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
11753f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.query("t3", COLUMNS, where[i], null, null, null, null);
11763f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
11773f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
11789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
11793f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
11803f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    /**
11813f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     *  10000 selects for a String - contains 'e'-indexed table
11823f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown     */
11833f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
11843f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static class SelectStringIndexedContains10000 extends
11853f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    PerformanceBase {
11863f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final int SIZE = 100 * kMultiplier;
11873f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private static final String[] COLUMNS = {"t3.a"};
11883f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        private String[] where = new String[SIZE];
11893f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
11903f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        @Override
11913f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void setUp() {
11923f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            super.setUp();
11933f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            Random random = new Random(42);
11943f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
11953f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase
11963f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            .execSQL("CREATE TABLE t3(a VARCHAR(100))");
11973f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            mDatabase.execSQL("CREATE INDEX i3a ON t3(a)");
11983f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
11993f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
12003f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                int r = random.nextInt(100000);
12013f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.execSQL("INSERT INTO t3 VALUES('"
12023f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                        + numberName(r) + "')");
12033f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
12043f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
12053f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
12063f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                where[i] = "a LIKE '*e*'";
12073f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
12083f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
12093f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
12103f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown
12113f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        public void testRun() {
12123f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            for (int i = 0; i < SIZE; i++) {
12133f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown                mDatabase.query("t3", COLUMNS, where[i], null, null, null, null);
12143f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown            }
12153f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        }
12169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
12179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12183f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static final String[] ONES =
12193f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        {"zero", "one", "two", "three", "four", "five", "six", "seven",
12203f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        "eight", "nine", "ten", "eleven", "twelve", "thirteen",
12213f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        "fourteen", "fifteen", "sixteen", "seventeen", "eighteen",
12223f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        "nineteen"};
12239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
12243f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown    public static final String[] TENS =
12253f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        {"", "ten", "twenty", "thirty", "forty", "fifty", "sixty",
12263f11f302c7e8c4ba513f6c559f33db96319c3825Jeff Brown        "seventy", "eighty", "ninety"};
12279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
1228