Changeset 248947 in webkit
- Timestamp:
- Aug 21, 2019 10:21:27 AM (5 years ago)
- Location:
- trunk/PerformanceTests
- Files:
-
- 2 added
- 2 edited
- 16 copied
- 9 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/PerformanceTests/ChangeLog
r248856 r248947 1 2019-08-21 Sihui Liu <sihui_liu@apple.com> 2 3 Add some IDB performance tests 4 https://bugs.webkit.org/show_bug.cgi?id=200906 5 6 Reviewed by Geoffrey Garen. 7 8 Add test coverage for IDB performance, and organize IDB tests into two categories. 9 10 * IndexedDB/basic/index-count-key.html: Added. 11 * IndexedDB/basic/index-count.html: Added. 12 * IndexedDB/basic/index-cursor-advance.html: Added. 13 * IndexedDB/basic/index-cursor-continue.html: Added. 14 * IndexedDB/basic/index-cursor-continuePrimaryKey.html: Added. 15 * IndexedDB/basic/index-cursor-delete.html: Added. 16 * IndexedDB/basic/index-cursor-update.html: Added. 17 * IndexedDB/basic/index-get.html: Added. 18 * IndexedDB/basic/index-multientry.html: Renamed from PerformanceTests/IndexedDB/index-multientry.html. 19 * IndexedDB/basic/objectstore-add.html: Added. 20 * IndexedDB/basic/objectstore-clear.html: Added. 21 * IndexedDB/basic/objectstore-count.html: Added. 22 * IndexedDB/basic/objectstore-cursor-advance.html: Added. 23 * IndexedDB/basic/objectstore-cursor-continue.html: Added. 24 * IndexedDB/basic/objectstore-cursor-delete.html: Added. 25 * IndexedDB/basic/objectstore-cursor-update.html: Added. 26 * IndexedDB/basic/objectstore-cursor.html: Renamed from PerformanceTests/IndexedDB/objectstore-cursor.html. 27 * IndexedDB/basic/objectstore-delete.html: Renamed from PerformanceTests/IndexedDB/index-get.html. 28 * IndexedDB/basic/objectstore-get.html: Added. 29 * IndexedDB/basic/objectstore-put.html: Renamed from PerformanceTests/IndexedDB/objectstore-get.html. 30 * IndexedDB/stress/large-array-keys.html: Renamed from PerformanceTests/IndexedDB/large-array-keys.html. 31 * IndexedDB/stress/large-binary-keys.html: Renamed from PerformanceTests/IndexedDB/large-binary-keys.html. 32 * IndexedDB/stress/large-number-of-inserts-responsiveness.html: Renamed from PerformanceTests/IndexedDB/large-number-of-inserts-responsiveness.html. 33 * IndexedDB/stress/large-number-of-inserts.html: Renamed from PerformanceTests/IndexedDB/large-number-of-inserts.html. 34 * IndexedDB/stress/large-string-keys.html: Renamed from PerformanceTests/IndexedDB/large-string-keys.html. 35 * Skipped: 36 1 37 2019-08-19 Sihui Liu <sihui_liu@apple.com> 2 38 -
trunk/PerformanceTests/IndexedDB/basic/index-count-key.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 const numberOfIterations = 20; 8 const numberOfItems = 5000; 9 7 10 // Delete database(s) for the test ahead of time. 8 var databaseName = "index- get-DB";11 var databaseName = "index-count-DB"; 9 12 indexedDB.deleteDatabase(databaseName).onsuccess = function() { 10 13 startIteration(); … … 13 16 var testGenerator = null; 14 17 var db = null; 15 var transaction = null;16 18 17 19 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 10,20 customIterationCount: numberOfIterations, 19 21 unit: 'ms', 20 22 done: function () { 21 23 transaction = null; 22 24 db = null; 23 testGenerator = null;24 25 PerfTestRunner.gc(); 25 26 } … … 37 38 } 38 39 39 var numberOfEntries = 5000;40 41 40 function *runIteration() 42 41 { … … 46 45 var objectStore = db.createObjectStore('store'); 47 46 objectStore.createIndex('index', 'indexKey'); 48 for (var i = 0; i < numberOf Entries; i++)49 objectStore.put( { test: 'yo', indexKey: "index" + i }, i);47 for (var i = 0; i < numberOfItems; i++) 48 objectStore.put( { value: 'value', indexKey: "index" + i }, i); 50 49 } 51 50 openRequest.onsuccess = nextStep; … … 56 55 57 56 var index = db.transaction('store').objectStore('store').index('index'); 58 var completed Gets = 0;59 for (var i = 0; i < numberOf Entries; i++)57 var completedCounts = 0; 58 for (var i = 0; i < numberOfItems; i++) 60 59 { 61 index. get('index' + i).onsuccess = function (event) {62 if (event.target.result .test != "yo")63 alert("Expected 'yo', got '" + event.target.result.test + "'");60 index.count('index' + i).onsuccess = function (event) { 61 if (event.target.result != 1) 62 alert("Expected 1 item for key index" + i); 64 63 65 if (++completed Gets == numberOfEntries)64 if (++completedCounts == numberOfItems) 66 65 nextStep(); 67 66 }; -
trunk/PerformanceTests/IndexedDB/basic/index-count.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 const numberOfIterations = 20; 8 const numberOfItems = 5000; 9 7 10 // Delete database(s) for the test ahead of time. 8 var databaseName = "index- get-DB";11 var databaseName = "index-count-DB"; 9 12 indexedDB.deleteDatabase(databaseName).onsuccess = function() { 10 13 startIteration(); … … 13 16 var testGenerator = null; 14 17 var db = null; 15 var transaction = null;16 18 17 19 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 10,20 customIterationCount: numberOfIterations, 19 21 unit: 'ms', 20 22 done: function () { 21 transaction = null;22 23 db = null; 23 24 testGenerator = null; … … 37 38 } 38 39 39 var numberOfEntries = 5000;40 41 40 function *runIteration() 42 41 { … … 46 45 var objectStore = db.createObjectStore('store'); 47 46 objectStore.createIndex('index', 'indexKey'); 48 for (var i = 0; i < numberOf Entries; i++)49 objectStore.put( { test: 'yo', indexKey: "index" + i }, i);47 for (var i = 0; i < numberOfItems; i++) 48 objectStore.put( { value: 'value', indexKey: "index" + i }, i); 50 49 } 51 50 openRequest.onsuccess = nextStep; … … 56 55 57 56 var index = db.transaction('store').objectStore('store').index('index'); 58 var completedGets = 0; 59 for (var i = 0; i < numberOfEntries; i++) 60 { 61 index.get('index' + i).onsuccess = function (event) { 62 if (event.target.result.test != "yo") 63 alert("Expected 'yo', got '" + event.target.result.test + "'"); 57 index.count().onsuccess = function(event) { 58 if (event.target.result != numberOfItems) 59 alert("Expected " + numberOfItems + "items but get " + event.target.result); 64 60 65 if (++completedGets == numberOfEntries) 66 nextStep(); 67 }; 61 nextStep(); 68 62 } 69 63 -
trunk/PerformanceTests/IndexedDB/basic/index-cursor-advance.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 const numberOfIterations = 20; 8 const numberOfItems = 5000; 9 const cursorStep = 2; 10 7 11 // Delete database(s) for the test ahead of time. 8 var databaseName = "index- get-DB";12 var databaseName = "index-cursor-advance-DB"; 9 13 indexedDB.deleteDatabase(databaseName).onsuccess = function() { 10 14 startIteration(); … … 13 17 var testGenerator = null; 14 18 var db = null; 15 var transaction = null;16 19 17 20 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 10,21 customIterationCount: numberOfIterations, 19 22 unit: 'ms', 20 23 done: function () { 21 transaction = null;22 24 db = null; 23 25 testGenerator = null; … … 37 39 } 38 40 39 var numberOfEntries = 5000;40 41 41 function *runIteration() 42 42 { … … 46 46 var objectStore = db.createObjectStore('store'); 47 47 objectStore.createIndex('index', 'indexKey'); 48 for (var i = 0; i < numberOf Entries; i++)49 objectStore.put( { test: 'yo', indexKey: "index" + i }, i);48 for (var i = 0; i < numberOfItems; ++i) 49 objectStore.put({ value: 'value', indexKey: "index" + i }, i); 50 50 } 51 51 openRequest.onsuccess = nextStep; … … 56 56 57 57 var index = db.transaction('store').objectStore('store').index('index'); 58 var completedGets = 0; 59 for (var i = 0; i < numberOfEntries; i++) 60 { 61 index.get('index' + i).onsuccess = function (event) { 62 if (event.target.result.test != "yo") 63 alert("Expected 'yo', got '" + event.target.result.test + "'"); 58 var position = 0; 59 index.openCursor().onsuccess = function(event) { 60 var cursor = event.target.result; 61 if(cursor) { 62 cursor.advance(cursorStep); 63 position += cursorStep; 64 } else { 65 if (position < numberOfItems) 66 alert("Expected cursor to stop after position" + numberOfItems + ", but stopped at " + position); 64 67 65 if (++completedGets == numberOfEntries) 66 nextStep(); 67 }; 68 nextStep(); 69 } 68 70 } 69 71 -
trunk/PerformanceTests/IndexedDB/basic/index-cursor-continue.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 const numberOfIterations = 20; 8 const numberOfItems = 5000; 9 7 10 // Delete database(s) for the test ahead of time. 8 var databaseName = "index- get-DB";11 var databaseName = "index-cursor-continue-DB"; 9 12 indexedDB.deleteDatabase(databaseName).onsuccess = function() { 10 13 startIteration(); … … 13 16 var testGenerator = null; 14 17 var db = null; 15 var transaction = null;16 18 17 19 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 10,20 customIterationCount: numberOfIterations, 19 21 unit: 'ms', 20 22 done: function () { 21 transaction = null;22 23 db = null; 23 24 testGenerator = null; … … 37 38 } 38 39 39 var numberOfEntries = 5000;40 41 40 function *runIteration() 42 41 { … … 46 45 var objectStore = db.createObjectStore('store'); 47 46 objectStore.createIndex('index', 'indexKey'); 48 for (var i = 0; i < numberOf Entries; i++)49 objectStore.put( { test: 'yo', indexKey: "index" + i }, i);47 for (var i = 0; i < numberOfItems; ++i) 48 objectStore.put({ value: 'value', indexKey: "index" + i }, i); 50 49 } 51 50 openRequest.onsuccess = nextStep; … … 56 55 57 56 var index = db.transaction('store').objectStore('store').index('index'); 58 var completedGets = 0; 59 for (var i = 0; i < numberOfEntries; i++) 60 { 61 index.get('index' + i).onsuccess = function (event) { 62 if (event.target.result.test != "yo") 63 alert("Expected 'yo', got '" + event.target.result.test + "'"); 57 var position = 0; 58 index.openCursor().onsuccess = function(event) { 59 var cursor = event.target.result; 60 if(cursor) { 61 ++ position; 62 cursor.continue(); 63 } else { 64 if (position < numberOfItems) 65 alert("Expected cursor to stop after position" + numberOfItems + ", but stopped at " + position); 64 66 65 if (++completedGets == numberOfEntries) 66 nextStep(); 67 }; 67 nextStep(); 68 } 68 69 } 69 70 -
trunk/PerformanceTests/IndexedDB/basic/index-cursor-continuePrimaryKey.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 const numberOfIterations = 20; 8 const numberOfItems = 5000; 9 7 10 // Delete database(s) for the test ahead of time. 8 var databaseName = "index- get-DB";11 var databaseName = "index-cursor-continue-DB"; 9 12 indexedDB.deleteDatabase(databaseName).onsuccess = function() { 10 13 startIteration(); … … 13 16 var testGenerator = null; 14 17 var db = null; 15 var transaction = null;16 18 17 19 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 10,20 customIterationCount: numberOfIterations, 19 21 unit: 'ms', 20 22 done: function () { 21 transaction = null;22 23 db = null; 23 24 testGenerator = null; … … 37 38 } 38 39 39 var numberOfEntries = 5000;40 41 40 function *runIteration() 42 41 { … … 46 45 var objectStore = db.createObjectStore('store'); 47 46 objectStore.createIndex('index', 'indexKey'); 48 for (var i = 0; i < numberOf Entries; i++)49 objectStore.put( { test: 'yo', indexKey: "index" + i}, i);47 for (var i = 0; i < numberOfItems; ++i) 48 objectStore.put({ value: 'value', indexKey: 'indexValue' }, i); 50 49 } 51 50 openRequest.onsuccess = nextStep; … … 56 55 57 56 var index = db.transaction('store').objectStore('store').index('index'); 58 var completedGets = 0; 59 for (var i = 0; i < numberOfEntries; i++) 60 { 61 index.get('index' + i).onsuccess = function (event) { 62 if (event.target.result.test != "yo") 63 alert("Expected 'yo', got '" + event.target.result.test + "'"); 57 var primaryKey = 0; 58 index.openCursor().onsuccess = function(event) { 59 var cursor = event.target.result; 60 if(cursor) { 61 ++ primaryKey; 62 cursor.continuePrimaryKey('indexValue', primaryKey); 63 } else { 64 if (primaryKey < numberOfItems) 65 alert("Expected cursor to visit " + numberOfItems + " items, only got " + primaryKey); 64 66 65 if (++completedGets == numberOfEntries) 66 nextStep(); 67 }; 67 nextStep(); 68 } 68 69 } 69 70 -
trunk/PerformanceTests/IndexedDB/basic/index-cursor-delete.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 const numberOfIterations = 20; 8 const numberOfItems = 5000; 9 7 10 // Delete database(s) for the test ahead of time. 8 var databaseName = "index- get-DB";11 var databaseName = "index-cursor-delete-DB"; 9 12 indexedDB.deleteDatabase(databaseName).onsuccess = function() { 10 13 startIteration(); … … 16 19 17 20 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 10,21 customIterationCount: numberOfIterations, 19 22 unit: 'ms', 20 23 done: function () { … … 37 40 } 38 41 39 var numberOfEntries = 5000;40 41 42 function *runIteration() 42 43 { … … 46 47 var objectStore = db.createObjectStore('store'); 47 48 objectStore.createIndex('index', 'indexKey'); 48 for (var i = 0; i < numberOfEntries; i++)49 objectStore.put( { test: 'yo', indexKey: "index" + i }, i);50 49 } 51 50 openRequest.onsuccess = nextStep; … … 53 52 yield; 54 53 54 // Store items for deletion. 55 transaction = db.transaction('store', 'readwrite'); 56 var objectStore = transaction.objectStore('store'); 57 for (var i = 0; i < numberOfItems; ++i) 58 objectStore.put({ value: 'value', indexKey: "index" + i }, i); 59 60 transaction.oncomplete = function(event) { 61 nextStep(); 62 } 63 64 yield; 65 55 66 var startTime = PerfTestRunner.now(); 56 67 57 var index = db.transaction('store').objectStore('store').index('index'); 58 var completedGets = 0; 59 for (var i = 0; i < numberOfEntries; i++) 60 { 61 index.get('index' + i).onsuccess = function (event) { 62 if (event.target.result.test != "yo") 63 alert("Expected 'yo', got '" + event.target.result.test + "'"); 68 var index = db.transaction('store', 'readwrite').objectStore('store').index('index'); 69 var completedDeletes = 0; 70 index.openCursor().onsuccess = function(event) { 71 var cursor = event.target.result; 72 if(cursor) { 73 cursor.delete().onsuccess = function(event) { 74 if (++completedDeletes == numberOfItems) 75 nextStep(); 76 } 64 77 65 if (++completedGets == numberOfEntries) 66 nextStep(); 67 }; 78 cursor.continue(); 79 } 68 80 } 69 81 -
trunk/PerformanceTests/IndexedDB/basic/index-cursor-update.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 const numberOfIterations = 10; 8 const numberOfItems = 5000; 9 7 10 // Delete database(s) for the test ahead of time. 8 var databaseName = "index- get-DB";11 var databaseName = "index-cursor-update-DB"; 9 12 indexedDB.deleteDatabase(databaseName).onsuccess = function() { 10 13 startIteration(); … … 13 16 var testGenerator = null; 14 17 var db = null; 15 var transaction = null;16 18 17 19 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 10,20 customIterationCount: numberOfIterations, 19 21 unit: 'ms', 20 22 done: function () { 21 transaction = null;22 23 db = null; 23 24 testGenerator = null; … … 37 38 } 38 39 39 var numberOfEntries = 5000;40 41 40 function *runIteration() 42 41 { … … 46 45 var objectStore = db.createObjectStore('store'); 47 46 objectStore.createIndex('index', 'indexKey'); 48 for (var i = 0; i < numberOf Entries; i++)49 objectStore.put( { test: 'yo', indexKey: "index" + i }, i);47 for (var i = 0; i < numberOfItems; ++i) 48 objectStore.put({ value: 'value', indexKey: "index" + i }, i); 50 49 } 51 50 openRequest.onsuccess = nextStep; … … 55 54 var startTime = PerfTestRunner.now(); 56 55 57 var index = db.transaction('store').objectStore('store').index('index'); 58 var completedGets = 0; 59 for (var i = 0; i < numberOfEntries; i++) 60 { 61 index.get('index' + i).onsuccess = function (event) { 62 if (event.target.result.test != "yo") 63 alert("Expected 'yo', got '" + event.target.result.test + "'"); 56 var index = db.transaction('store', 'readwrite').objectStore('store').index('index'); 57 var completedUpdates = 0; 58 index.openCursor().onsuccess = function(event) { 59 var cursor = event.target.result; 60 if(cursor) { 61 cursor.update({ value: Math.random(), indexKey: cursor.key}).onsuccess = function(event) { 62 if (++completedUpdates == numberOfItems) 63 nextStep(); 64 } 64 65 65 if (++completedGets == numberOfEntries) 66 nextStep(); 67 }; 66 cursor.continue(); 67 } 68 68 } 69 69 -
trunk/PerformanceTests/IndexedDB/basic/index-get.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 7 const numberOfIterations = 10; 8 const numberOfItems = 5000; 6 9 7 10 // Delete database(s) for the test ahead of time. … … 13 16 var testGenerator = null; 14 17 var db = null; 15 var transaction = null;16 18 17 19 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 10,20 customIterationCount: numberOfIterations, 19 21 unit: 'ms', 20 22 done: function () { 21 transaction = null;22 23 db = null; 23 24 testGenerator = null; … … 37 38 } 38 39 39 var numberOfEntries = 5000;40 41 40 function *runIteration() 42 41 { … … 46 45 var objectStore = db.createObjectStore('store'); 47 46 objectStore.createIndex('index', 'indexKey'); 48 for (var i = 0; i < numberOf Entries; i++)47 for (var i = 0; i < numberOfItems; i++) 49 48 objectStore.put( { test: 'yo', indexKey: "index" + i }, i); 50 49 } … … 57 56 var index = db.transaction('store').objectStore('store').index('index'); 58 57 var completedGets = 0; 59 for (var i = 0; i < numberOfEntries; i++) 60 { 58 for (var i = 0; i < numberOfItems; i++) { 61 59 index.get('index' + i).onsuccess = function (event) { 62 60 if (event.target.result.test != "yo") 63 61 alert("Expected 'yo', got '" + event.target.result.test + "'"); 64 62 65 if (++completedGets == numberOf Entries)63 if (++completedGets == numberOfItems) 66 64 nextStep(); 67 65 }; -
trunk/PerformanceTests/IndexedDB/basic/index-multientry.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 var iterationCount = 20; 8 var numberDeleted = 0; 7 const numberOfIterations = 20; 9 8 10 9 // Delete all databases for the test ahead of time. 10 var numberDeleted = 0; 11 11 var databaseNamePrefix = "index-multientry-DB-"; 12 for (var i = 0; i < iterationCount+ 1; ++i) {12 for (var i = 0; i < numberOfIterations + 1; ++i) { 13 13 req = indexedDB.deleteDatabase(databaseNamePrefix + i); 14 14 req.onsuccess = function() { 15 if (++numberDeleted == iterationCount)15 if (++numberDeleted == numberOfIterations) 16 16 startIteration(); 17 17 } … … 24 24 25 25 PerfTestRunner.prepareToMeasureValuesAsync({ 26 customIterationCount: iterationCount,26 customIterationCount: numberOfIterations, 27 27 unit: 'ms', 28 28 done: function () { -
trunk/PerformanceTests/IndexedDB/basic/objectstore-add.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 const numberOfIterations = 20; 8 const numberOfItems = 5000; 9 7 10 // Delete database(s) for the test ahead of time. 8 var databaseName = "objectstore- get-DB";11 var databaseName = "objectstore-add-DB"; 9 12 indexedDB.deleteDatabase(databaseName).onsuccess = function() { 10 13 startIteration(); … … 13 16 var testGenerator = null; 14 17 var db = null; 15 var transaction = null;16 18 17 19 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 20,20 customIterationCount: numberOfIterations, 19 21 unit: 'ms', 20 22 done: function () { 21 transaction = null;22 23 db = null; 23 24 testGenerator = null; … … 37 38 } 38 39 39 var numberOfEntries = 5000;40 41 40 function *runIteration() 42 41 { … … 45 44 db = event.target.result; 46 45 var objectStore = db.createObjectStore('store'); 47 for (var i = 0; i < numberOfEntries; ++i)48 objectStore.put("index" + i, i);49 46 } 50 47 openRequest.onsuccess = nextStep; … … 54 51 var startTime = PerfTestRunner.now(); 55 52 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) { 53 var objectStore = db.transaction('store', 'readwrite').objectStore('store'); 54 var completedAdds = 0; 55 for (var i = 0; i < numberOfItems; ++i) { 56 objectStore.add("value" + i, i).onsuccess = (function (key) { 62 57 return function(event) { 63 if (event.target.result != ("index" + j))64 alert("Expected ' index" + j+ "', got '" + event.target.result + "'");58 if (event.target.result != key) 59 alert("Expected '" + key + "', got '" + event.target.result + "'"); 65 60 66 if (++completed Gets == numberOfEntries)61 if (++completedAdds == numberOfItems) 67 62 nextStep(); 68 63 } … … 75 70 return; 76 71 72 // Clear the object store so we don't add existing items in the next iteration. 73 objectStore = db.transaction('store', 'readwrite').objectStore('store'); 74 objectStore.clear().onsuccess = function(event) { 75 nextStep(); 76 } 77 78 yield; 79 77 80 setTimeout(startIteration, 0); 78 81 } -
trunk/PerformanceTests/IndexedDB/basic/objectstore-clear.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 const numberOfIterations = 20; 8 const numberOfItems = 5000; 9 7 10 // Delete database(s) for the test ahead of time. 8 var databaseName = " index-get-DB";11 var databaseName = "objectstore-clear-DB"; 9 12 indexedDB.deleteDatabase(databaseName).onsuccess = function() { 10 13 startIteration(); … … 16 19 17 20 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 10,21 customIterationCount: numberOfIterations, 19 22 unit: 'ms', 20 23 done: function () { … … 37 40 } 38 41 39 var numberOfEntries = 5000;40 41 42 function *runIteration() 42 43 { … … 45 46 db = event.target.result; 46 47 var objectStore = db.createObjectStore('store'); 47 objectStore.createIndex('index', 'indexKey');48 for (var i = 0; i < numberOfEntries; i++)49 objectStore.put( { test: 'yo', indexKey: "index" + i }, i);50 48 } 51 49 openRequest.onsuccess = nextStep; … … 53 51 yield; 54 52 53 // Store items for clear. 54 transaction = db.transaction('store', 'readwrite'); 55 var objectStore = transaction.objectStore('store'); 56 for (var i = 0; i < numberOfItems; ++i) { 57 objectStore.add("value" + i, i); 58 } 59 transaction.oncomplete = function(event) { 60 nextStep(); 61 } 62 63 yield; 64 55 65 var startTime = PerfTestRunner.now(); 56 66 57 var index = db.transaction('store').objectStore('store').index('index'); 58 var completedGets = 0; 59 for (var i = 0; i < numberOfEntries; i++) 60 { 61 index.get('index' + i).onsuccess = function (event) { 62 if (event.target.result.test != "yo") 63 alert("Expected 'yo', got '" + event.target.result.test + "'"); 64 65 if (++completedGets == numberOfEntries) 66 nextStep(); 67 }; 67 objectStore = db.transaction('store', 'readwrite').objectStore('store'); 68 objectStore.clear().onsuccess = function(event) { 69 nextStep(); 68 70 } 69 71 -
trunk/PerformanceTests/IndexedDB/basic/objectstore-count.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 const numberOfIterations = 20; 8 const numberOfItems = 5000; 9 7 10 // Delete database(s) for the test ahead of time. 8 var databaseName = "objectstore- get-DB";11 var databaseName = "objectstore-count-DB"; 9 12 indexedDB.deleteDatabase(databaseName).onsuccess = function() { 10 13 startIteration(); … … 13 16 var testGenerator = null; 14 17 var db = null; 15 var transaction = null;16 18 17 19 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 20,20 customIterationCount: numberOfIterations, 19 21 unit: 'ms', 20 22 done: function () { 21 transaction = null;22 23 db = null; 23 24 testGenerator = null; … … 37 38 } 38 39 39 var numberOfEntries = 5000;40 41 40 function *runIteration() 42 41 { … … 45 44 db = event.target.result; 46 45 var objectStore = db.createObjectStore('store'); 47 for (var i = 0; i < numberOf Entries; ++i)48 objectStore.put(" index" + i, i);46 for (var i = 0; i < numberOfItems; ++i) 47 objectStore.put("value" + i, i); 49 48 } 50 49 openRequest.onsuccess = nextStep; … … 55 54 56 55 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 + "'"); 56 objectStore.count().onsuccess = function(event) { 57 if (event.target.result != numberOfItems) 58 alert("Expected " + numberOfItems + "items but get " + event.target.result); 65 59 66 if (++completedGets == numberOfEntries) 67 nextStep(); 68 } 69 })(i); 60 nextStep(); 70 61 } 71 62 -
trunk/PerformanceTests/IndexedDB/basic/objectstore-cursor-advance.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 const numberOfIterations = 20; 8 const numberOfItems = 5000; 9 const cursorStep = 2; 10 7 11 // Delete database(s) for the test ahead of time. 8 var databaseName = "objectstore- get-DB";12 var databaseName = "objectstore-curosr-advance-DB"; 9 13 indexedDB.deleteDatabase(databaseName).onsuccess = function() { 10 14 startIteration(); … … 13 17 var testGenerator = null; 14 18 var db = null; 15 var transaction = null;16 19 17 20 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 20,21 customIterationCount: numberOfIterations, 19 22 unit: 'ms', 20 23 done: function () { 21 transaction = null;22 24 db = null; 23 25 testGenerator = null; … … 37 39 } 38 40 39 var numberOfEntries = 5000;40 41 41 function *runIteration() 42 42 { … … 45 45 db = event.target.result; 46 46 var objectStore = db.createObjectStore('store'); 47 for (var i = 0; i < numberOf Entries; ++i)48 objectStore.put(" index" + i, i);47 for (var i = 0; i < numberOfItems; ++i) 48 objectStore.put("value" + i, i); 49 49 } 50 50 openRequest.onsuccess = nextStep; … … 55 55 56 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 + "'"); 57 var expectedKey = 0; 58 objectStore.openCursor().onsuccess = function(event) { 59 var cursor = event.target.result; 60 if(cursor) { 61 if (cursor.key != expectedKey) 62 alert("Expected cursor.key '" + expectedKey + "', got '" + cursor.key + "'"); 65 63 66 if (++completedGets == numberOfEntries) 67 nextStep(); 68 } 69 })(i); 64 expectedKey += cursorStep; 65 cursor.advance(cursorStep); 66 } else { 67 nextStep(); 68 } 70 69 } 71 70 -
trunk/PerformanceTests/IndexedDB/basic/objectstore-cursor-continue.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 const numberOfIterations = 20; 8 const numberOfItems = 5000; 9 7 10 // Delete database(s) for the test ahead of time. 8 var databaseName = "objectstore- get-DB";11 var databaseName = "objectstore-curosr-continue-DB"; 9 12 indexedDB.deleteDatabase(databaseName).onsuccess = function() { 10 13 startIteration(); … … 13 16 var testGenerator = null; 14 17 var db = null; 15 var transaction = null;16 18 17 19 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 20,20 customIterationCount: numberOfIterations, 19 21 unit: 'ms', 20 22 done: function () { 21 transaction = null;22 23 db = null; 23 24 testGenerator = null; … … 37 38 } 38 39 39 var numberOfEntries = 5000;40 41 40 function *runIteration() 42 41 { … … 45 44 db = event.target.result; 46 45 var objectStore = db.createObjectStore('store'); 47 for (var i = 0; i < numberOf Entries; ++i)48 objectStore.put(" index" + i, i);46 for (var i = 0; i < numberOfItems; ++i) 47 objectStore.put("value" + i, i); 49 48 } 50 49 openRequest.onsuccess = nextStep; … … 55 54 56 55 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 + "'"); 56 var expectedKey = 0; 57 objectStore.openCursor().onsuccess = function(event) { 58 var cursor = event.target.result; 59 if(cursor) { 60 if (cursor.key != expectedKey++) 61 alert("Expected cursor.key '" + expectedKey + "', got '" + cursor.key + "'"); 65 62 66 if (++completedGets == numberOfEntries)67 nextStep();68 }69 } )(i);63 cursor.continue(); 64 } else { 65 nextStep(); 66 } 70 67 } 71 68 -
trunk/PerformanceTests/IndexedDB/basic/objectstore-cursor-delete.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 const numberOfIterations = 20; 8 const numberOfItems = 5000; 9 7 10 // Delete database(s) for the test ahead of time. 8 var databaseName = "objectstore- get-DB";11 var databaseName = "objectstore-cursor-delete-DB"; 9 12 indexedDB.deleteDatabase(databaseName).onsuccess = function() { 10 13 startIteration(); … … 16 19 17 20 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 20,21 customIterationCount: numberOfIterations, 19 22 unit: 'ms', 20 23 done: function () { … … 37 40 } 38 41 39 var numberOfEntries = 5000;40 41 42 function *runIteration() 42 43 { … … 45 46 db = event.target.result; 46 47 var objectStore = db.createObjectStore('store'); 47 for (var i = 0; i < numberOfEntries; ++i)48 objectStore.put("index" + i, i);49 48 } 50 49 openRequest.onsuccess = nextStep; … … 52 51 yield; 53 52 53 // Store items for deletion. 54 transaction = db.transaction('store', 'readwrite'); 55 var objectStore = transaction.objectStore('store'); 56 for (var i = 0; i < numberOfItems; ++i) 57 objectStore.add("value" + i, i); 58 59 transaction.oncomplete = function(event) { 60 nextStep(); 61 } 62 63 yield; 64 54 65 var startTime = PerfTestRunner.now(); 55 66 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 objectStore = db.transaction('store', 'readwrite').objectStore('store'); 68 var completedDeletes = 0; 69 objectStore.openCursor().onsuccess = function(event) { 70 var cursor = event.target.result; 71 if(cursor) { 72 cursor.delete().onsuccess = function(event) { 73 if (++completedDeletes == numberOfItems) 67 74 nextStep(); 68 75 } 69 })(i); 76 77 cursor.continue(); 78 } 70 79 } 71 80 -
trunk/PerformanceTests/IndexedDB/basic/objectstore-cursor-update.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 const numberOfIterations = 20; 8 const numberOfItems = 5000; 9 7 10 // Delete database(s) for the test ahead of time. 8 var databaseName = "objectstore- get-DB";11 var databaseName = "objectstore-cursor-update-DB"; 9 12 indexedDB.deleteDatabase(databaseName).onsuccess = function() { 10 13 startIteration(); … … 13 16 var testGenerator = null; 14 17 var db = null; 15 var transaction = null;16 18 17 19 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 20,20 customIterationCount: numberOfIterations, 19 21 unit: 'ms', 20 22 done: function () { 21 transaction = null;22 23 db = null; 23 24 testGenerator = null; … … 37 38 } 38 39 39 var numberOfEntries = 5000;40 41 40 function *runIteration() 42 41 { … … 45 44 db = event.target.result; 46 45 var objectStore = db.createObjectStore('store'); 47 for (var i = 0; i < numberOf Entries; ++i)48 objectStore.put(" index" + i, i);46 for (var i = 0; i < numberOfItems; ++i) 47 objectStore.put("value", i); 49 48 } 50 49 openRequest.onsuccess = nextStep; … … 54 53 var startTime = PerfTestRunner.now(); 55 54 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) 55 var objectStore = db.transaction('store', 'readwrite').objectStore('store'); 56 var completedUpdates = 0; 57 objectStore.openCursor().onsuccess = function(event) { 58 var cursor = event.target.result; 59 if(cursor) { 60 cursor.update(Math.random()).onsuccess = function(event) { 61 if (++completedUpdates == numberOfItems) 67 62 nextStep(); 68 63 } 69 })(i); 64 65 cursor.continue(); 66 } 70 67 } 71 68 -
trunk/PerformanceTests/IndexedDB/basic/objectstore-cursor.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 7 var iterationCount = 10; 8 var numberDeleted = 0; 8 9 9 // Delete all databases for the test ahead of time. 10 10 var databaseName = "objectstore-cursor-DB"; -
trunk/PerformanceTests/IndexedDB/basic/objectstore-delete.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 const numberOfIterations = 20; 8 const numberOfItems = 5000; 9 7 10 // Delete database(s) for the test ahead of time. 8 var databaseName = " index-get-DB";11 var databaseName = "objectstore-delete-DB"; 9 12 indexedDB.deleteDatabase(databaseName).onsuccess = function() { 10 13 startIteration(); … … 16 19 17 20 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 10,21 customIterationCount: numberOfIterations, 19 22 unit: 'ms', 20 23 done: function () { … … 37 40 } 38 41 39 var numberOfEntries = 5000;40 41 42 function *runIteration() 42 43 { … … 45 46 db = event.target.result; 46 47 var objectStore = db.createObjectStore('store'); 47 objectStore.createIndex('index', 'indexKey');48 for (var i = 0; i < numberOfEntries; i++)49 objectStore.put( { test: 'yo', indexKey: "index" + i }, i);50 48 } 51 49 openRequest.onsuccess = nextStep; … … 53 51 yield; 54 52 53 // Store items for deletion. 54 transaction = db.transaction('store', 'readwrite'); 55 var objectStore = transaction.objectStore('store'); 56 for (var i = 0; i < numberOfItems; ++i) 57 objectStore.add("value" + i, i); 58 59 transaction.oncomplete = function(event) { 60 nextStep(); 61 } 62 63 yield; 64 55 65 var startTime = PerfTestRunner.now(); 56 66 57 var index = db.transaction('store').objectStore('store').index('index'); 58 var completedGets = 0; 59 for (var i = 0; i < numberOfEntries; i++) 60 { 61 index.get('index' + i).onsuccess = function (event) { 62 if (event.target.result.test != "yo") 63 alert("Expected 'yo', got '" + event.target.result.test + "'"); 64 65 if (++completedGets == numberOfEntries) 67 objectStore = db.transaction('store', 'readwrite').objectStore('store'); 68 var completedDeletes = 0; 69 for (var i = 0; i < numberOfItems; ++i) { 70 objectStore.delete(i).onsuccess = function(event) { 71 if (++completedDeletes == numberOfItems) 66 72 nextStep(); 67 } ;73 } 68 74 } 69 75 -
trunk/PerformanceTests/IndexedDB/basic/objectstore-get.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 7 const numberOfIterations = 20; 8 const numberOfItems = 5000; 6 9 7 10 // Delete database(s) for the test ahead of time. … … 16 19 17 20 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 20,21 customIterationCount: numberOfIterations, 19 22 unit: 'ms', 20 23 done: function () { … … 37 40 } 38 41 39 var numberOfEntries = 5000;40 41 42 function *runIteration() 42 43 { … … 45 46 db = event.target.result; 46 47 var objectStore = db.createObjectStore('store'); 47 for (var i = 0; i < numberOf Entries; ++i)48 for (var i = 0; i < numberOfItems; ++i) 48 49 objectStore.put("index" + i, i); 49 50 } … … 56 57 var objectStore = db.transaction('store').objectStore('store'); 57 58 var completedGets = 0; 58 for (var i = 0; i < numberOfEntries; ++i) 59 { 60 59 for (var i = 0; i < numberOfItems; ++i) { 61 60 objectStore.get(i).onsuccess = (function (j) { 62 61 return function(event) { … … 64 63 alert("Expected 'index" + j + "', got '" + event.target.result + "'"); 65 64 66 if (++completedGets == numberOf Entries)65 if (++completedGets == numberOfItems) 67 66 nextStep(); 68 67 } -
trunk/PerformanceTests/IndexedDB/basic/objectstore-put.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 7 const numberOfIterations = 20; 8 const numberOfItems = 5000; 9 7 10 // Delete database(s) for the test ahead of time. 8 var databaseName = "objectstore- get-DB";11 var databaseName = "objectstore-put-DB"; 9 12 indexedDB.deleteDatabase(databaseName).onsuccess = function() { 10 13 startIteration(); … … 13 16 var testGenerator = null; 14 17 var db = null; 15 var transaction = null;16 18 17 19 PerfTestRunner.prepareToMeasureValuesAsync({ 18 customIterationCount: 20,20 customIterationCount: numberOfIterations, 19 21 unit: 'ms', 20 22 done: function () { 21 transaction = null;22 23 db = null; 23 24 testGenerator = null; … … 37 38 } 38 39 39 var numberOfEntries = 5000;40 41 40 function *runIteration() 42 41 { … … 45 44 db = event.target.result; 46 45 var objectStore = db.createObjectStore('store'); 47 for (var i = 0; i < numberOf Entries; ++i)48 objectStore.put(" index" + i, i);46 for (var i = 0; i < numberOfItems; ++i) 47 objectStore.put("value", i); 49 48 } 50 49 openRequest.onsuccess = nextStep; … … 54 53 var startTime = PerfTestRunner.now(); 55 54 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) { 55 var objectStore = db.transaction('store', 'readwrite').objectStore('store'); 56 var completedPuts = 0; 57 for (var i = 0; i < numberOfItems; ++i) { 58 objectStore.put(Math.random(), i).onsuccess = (function (key) { 62 59 return function(event) { 63 if (event.target.result != ("index" + j))64 alert("Expected ' index" + j+ "', got '" + event.target.result + "'");60 if (event.target.result != key) 61 alert("Expected '" + key + "', got '" + event.target.result + "'"); 65 62 66 if (++completed Gets == numberOfEntries)63 if (++completedPuts == numberOfItems) 67 64 nextStep(); 68 65 } -
trunk/PerformanceTests/IndexedDB/stress/large-array-keys.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 -
trunk/PerformanceTests/IndexedDB/stress/large-binary-keys.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 -
trunk/PerformanceTests/IndexedDB/stress/large-number-of-inserts-responsiveness.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 -
trunk/PerformanceTests/IndexedDB/stress/large-number-of-inserts.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 -
trunk/PerformanceTests/IndexedDB/stress/large-string-keys.html
r248946 r248947 2 2 <html> 3 3 <body> 4 <script src="../ resources/runner.js"></script>4 <script src="../../resources/runner.js"></script> 5 5 <script> 6 6 -
trunk/PerformanceTests/Skipped
r243604 r248947 115 115 116 116 # Bugs 167622, 167637, 167638 and 167640 - Some IndexedDB test deadlock on the GTK+ perf bot. 117 [GTK] IndexedDB/ index-get.html118 [GTK] IndexedDB/ large-number-of-inserts.html119 [GTK] IndexedDB/ objectstore-cursor.html120 [GTK] IndexedDB/ objectstore-get.html117 [GTK] IndexedDB/basic/index-get.html 118 [GTK] IndexedDB/stress/large-number-of-inserts.html 119 [GTK] IndexedDB/basic/objectstore-cursor.html 120 [GTK] IndexedDB/basic/objectstore-get.html 121 121 122 122 # Bug 167623 - [GTK][EFL] Performance test IndexedDB/large-number-of-inserts-responsiveness.html timeouts. … … 125 125 126 126 # Bug 167616 - Performance test IndexedDB/large-binary-keys.html creates a DB of more than 6GB and takes more than 10 minutes to run. 127 [GTK] IndexedDB/ large-binary-keys.html127 [GTK] IndexedDB/stress/large-binary-keys.html 128 128 129 129 # REGRESSION (r242911?): High Sierra Release WK2 Perf bot timing out while running IndexedDB/large-number-of-inserts.html 130 IndexedDB/ large-number-of-inserts.html130 IndexedDB/stress/large-number-of-inserts.html
Note: See TracChangeset
for help on using the changeset viewer.