PerformanceTests/ChangeLog

112016-12-13 Brady Eidson <beidson@apple.com>
22
 3 Add a PerfTest targeting IDBObjectStore.get().
 4 https://bugs.webkit.org/show_bug.cgi?id=165816
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 * IndexedDB/objectstore-get.html: Added.
 9
 102016-12-13 Brady Eidson <beidson@apple.com>
 11
312 Add a PerfTest targeting IDBIndex.get().
413 https://bugs.webkit.org/show_bug.cgi?id=165803
514

PerformanceTests/IndexedDB/objectstore-get.html

 1<!DOCTYPE html>
 2<html>
 3<body>
 4<script src="../resources/runner.js"></script>
 5<script>
 6
 7// Delete database(s) for the test ahead of time.
 8var databaseName = "objectstore-get-DB";
 9indexedDB.deleteDatabase(databaseName).onsuccess = function() {
 10 startIteration();
 11}
 12
 13var testGenerator = null;
 14var db = null;
 15var transaction = null;
 16
 17PerfTestRunner.prepareToMeasureValuesAsync({
 18 customIterationCount: 20,
 19 unit: 'ms',
 20 done: function () {
 21 transaction = null;
 22 db = null;
 23 testGenerator = null;
 24 PerfTestRunner.gc();
 25 }
 26});
 27
 28function startIteration()
 29{
 30 testGenerator = runIteration();
 31 nextStep();
 32}
 33
 34function nextStep()
 35{
 36 testGenerator.next();
 37}
 38
 39var numberOfEntries = 5000;
 40
 41function *runIteration()
 42{
 43 var openRequest = indexedDB.open(databaseName);
 44 openRequest.onupgradeneeded = function(event) {
 45 db = event.target.result;
 46 var objectStore = db.createObjectStore('store');
 47 for (var i = 0; i < numberOfEntries; ++i)
 48 objectStore.put("index" + i, i);
 49 }
 50 openRequest.onsuccess = nextStep;
 51
 52 yield;
 53
 54 var startTime = PerfTestRunner.now();
 55
 56 var objectStore = db.transaction('store').objectStore('store');
 57 var completedGets = 0;
 58 for (var i = 0; i < numberOfEntries; ++i)
 59 {
 60
 61 objectStore.get(i).onsuccess = (function (j) {
 62 return function(event) {
 63 if (event.target.result != ("index" + j))
 64 alert("Expected 'index" + j + "', got '" + event.target.result + "'");
 65
 66 if (++completedGets == numberOfEntries)
 67 nextStep();
 68 }
 69 })(i);
 70 }
 71
 72 yield;
 73
 74 if (!PerfTestRunner.measureValueAsync(PerfTestRunner.now() - startTime))
 75 return;
 76
 77 setTimeout(startIteration, 0);
 78}
 79</script>
 80</body>
 81</html>