Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b5f38041 authored by Fyodor Kupolov's avatar Fyodor Kupolov
Browse files

Updated NewDatabasePerformanceTests

Restored kMultiplier back to 100. Renamed to SIZE_MULTIPLIER
Removed overlapping tests.
Added REPEAT_COUNT multiplier for testing fast read-only operations.

Added python script to process log output from multiple runs and present
results in human-readable form.

Example output:
*** TOTAL ALL TESTS (ms) ***: [49658, 45961, 53069, 52784, 53712] avg: 51036.8
Delete100: [3046, 2629, 3302, 3215, 2594] avg: 2957.2
DeleteIndexWhere100: [1645, 1784, 1989, 1780, 1919] avg: 1823.4
DeleteIndexed100: [2871, 2396, 3323, 3277, 2975] avg: 2968.4
DeleteWhere100: [2054, 1772, 1761, 1845, 1689] avg: 1824.2
InnerJoin100: [2661, 2992, 3375, 2823, 3362] avg: 3042.6
InnerJoinNoIndex100: [3548, 2886, 3514, 3458, 3530] avg: 3387.2
InnerJoinOneSide100: [2249, 2906, 3425, 3394, 3538] avg: 3102.4
Insert100: [1446, 1337, 1534, 1625, 1350] avg: 1458.4
InsertIndexed100: [1701, 1496, 1668, 1787, 1549] avg: 1640.2
Select100: [1841, 1734, 1897, 1976, 1740] avg: 1837.6
SelectIndex100: [1776, 1741, 1892, 1776, 1829] avg: 1802.8
SelectIndexString100: [1527, 1262, 1772, 1863, 1630] avg: 1610.8
SelectIndexStringComparison100: [1729, 1515, 1716, 1716, 2036] avg: 1742.4
SelectInteger100: [1493, 872, 1637, 1722, 1502] avg: 1445.2
SelectIntegerIndex100: [1853, 1305, 1656, 1548, 1694] avg: 1611.2
SelectString100: [1539, 1180, 1612, 1764, 1535] avg: 1526.0
SelectStringComparison100: [1402, 1584, 1627, 1834, 1531] avg: 1595.6
SelectStringContains100: [1779, 1553, 1771, 1728, 1742] avg: 1714.6
SelectStringIndexedContains100: [1552, 1755, 1770, 1747, 1793] avg: 1723.4
SelectStringStartsWith100: [1821, 1321, 1602, 1697, 1716] avg: 1631.4
SelectSubQIndex100: [3323, 3427, 3538, 3438, 3573] avg: 3459.8
UpdateIndexWhere100: [3382, 3341, 3367, 3413, 5412] avg: 3783.0
UpdateWhere100: [3420, 3173, 3321, 3358, 3473] avg: 3349.0

Test: runtest --path frameworks/base/core/tests/coretests/src/android/database/NewDatabasePerformanceTestSuite.java
Test: python process_newdb_perf_test_logs.py <path_to_logcat_output_file>

Bug: 38499845
Change-Id: Ibd703ec51671212c45d99c947245dee7e31d2c16
parent 631f7b7e
Loading
Loading
Loading
Loading
+23 −62
Original line number Original line Diff line number Diff line
@@ -23,68 +23,29 @@ public class NewDatabasePerformanceTestSuite extends TestSuite {
        TestSuite suite =
        TestSuite suite =
          new TestSuite(NewDatabasePerformanceTestSuite.class.getName());
          new TestSuite(NewDatabasePerformanceTestSuite.class.getName());


        suite.addTestSuite(NewDatabasePerformanceTests.
        suite.addTestSuite(NewDatabasePerformanceTests.Insert100.class);
                           Insert1000.class);
        suite.addTestSuite(NewDatabasePerformanceTests.InsertIndexed100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
        suite.addTestSuite(NewDatabasePerformanceTests.Select100.class);
                           InsertIndexed1000.class);
        suite.addTestSuite(NewDatabasePerformanceTests.SelectStringComparison100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
        suite.addTestSuite(NewDatabasePerformanceTests.SelectIndex100.class);
                           Select100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.InnerJoin100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
        suite.addTestSuite(NewDatabasePerformanceTests.InnerJoinOneSide100.class);
                           SelectStringComparison100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.InnerJoinNoIndex100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
        suite.addTestSuite(NewDatabasePerformanceTests.SelectSubQIndex100.class);
                           SelectIndex100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.SelectIndexStringComparison100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
        suite.addTestSuite(NewDatabasePerformanceTests.SelectInteger100.class);
                           InnerJoin100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.SelectString100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
        suite.addTestSuite(NewDatabasePerformanceTests.SelectIntegerIndex100.class);
                           InnerJoinOneSide100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.SelectIndexString100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
        suite.addTestSuite(NewDatabasePerformanceTests.SelectStringStartsWith100.class);
                           InnerJoinNoIndex100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.DeleteIndexed100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
        suite.addTestSuite(NewDatabasePerformanceTests.Delete100.class);
                           SelectSubQIndex100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.DeleteWhere100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
        suite.addTestSuite(NewDatabasePerformanceTests.DeleteIndexWhere100.class);
                           SelectIndexStringComparison100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.UpdateIndexWhere100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
        suite.addTestSuite(NewDatabasePerformanceTests.UpdateWhere100.class);
                           SelectInteger100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.SelectStringContains100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
        suite.addTestSuite(NewDatabasePerformanceTests.SelectStringIndexedContains100.class);
                           SelectString100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           SelectIntegerIndex100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           SelectIndexString100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           SelectStringStartsWith100.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           DeleteIndexed1000.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           Delete1000.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           DeleteWhere1000.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           DeleteIndexWhere1000.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           UpdateIndexWhere1000.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           UpdateWhere1000.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           InsertInteger10000.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           InsertIntegerIndex10000.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           InsertString10000.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           InsertStringIndexed10000.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           SelectStringStartsWith10000.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           SelectStringIndexedStartsWith10000.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           SelectInteger10000.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           SelectIntegerIndexed10000.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           SelectStringContains10000.class);
        suite.addTestSuite(NewDatabasePerformanceTests.
                           SelectStringIndexedContains10000.class);


        return suite;
        return suite;
    }
    }
+132 −374

File changed.

Preview size limit exceeded, changes collapsed.

+50 −0
Original line number Original line Diff line number Diff line
#!/usr/bin/env python

# Copyright (C) 2017 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import re
import sys

def main():
    args = sys.argv
    if len(args) <= 1:
        exit("Usage %s <log_file>" % args[0])
    with open(args[1], 'r') as f:
        all_lines = f.readlines()
    timings = {}
    running_sum = 0
    for line in all_lines:
        regex = r"NewDatabasePerformanceTests: Test (\w+) took (\d+) ms"
        matches = re.search(regex, line)
        if matches:
            test_name = matches.group(1)
            duration = int(matches.group(2))
            if not test_name in timings:
                timings[test_name] = []
            timings[test_name].append(duration)
            running_sum += duration
        if ("TestRunner: run finished:" in line) and (running_sum > 0):
            test_name = '*** TOTAL ALL TESTS (ms) ***'
            if not test_name in timings:
                timings[test_name] = []
            timings[test_name].append(running_sum)
            running_sum=0

    for k in sorted(timings):
        timings_ar = timings[k]
        print "%s: %s avg: %s" % (k, timings_ar, sum(timings_ar) / float(len(timings_ar)) )

if __name__ == '__main__':
    main()