Title: [209499] trunk/PerformanceTests
- Revision
- 209499
- Author
- beid...@apple.com
- Date
- 2016-12-07 16:50:17 -0800 (Wed, 07 Dec 2016)
Log Message
Add IDB perf tests stressing key size.
https://bugs.webkit.org/show_bug.cgi?id=165567
Reviewed by Alex Christensen.
* IndexedDB/large-array-keys.html: Added.
* IndexedDB/large-binary-keys.html: Added.
* IndexedDB/large-string-keys.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/PerformanceTests/ChangeLog (209498 => 209499)
--- trunk/PerformanceTests/ChangeLog 2016-12-08 00:44:19 UTC (rev 209498)
+++ trunk/PerformanceTests/ChangeLog 2016-12-08 00:50:17 UTC (rev 209499)
@@ -1,3 +1,14 @@
+2016-12-07 Brady Eidson <beid...@apple.com>
+
+ Add IDB perf tests stressing key size.
+ https://bugs.webkit.org/show_bug.cgi?id=165567
+
+ Reviewed by Alex Christensen.
+
+ * IndexedDB/large-array-keys.html: Added.
+ * IndexedDB/large-binary-keys.html: Added.
+ * IndexedDB/large-string-keys.html: Added.
+
2016-12-05 Brady Eidson <beid...@apple.com>
Add an IndexedDB perf test to PerformanceTests.
Added: trunk/PerformanceTests/IndexedDB/large-array-keys.html (0 => 209499)
--- trunk/PerformanceTests/IndexedDB/large-array-keys.html (rev 0)
+++ trunk/PerformanceTests/IndexedDB/large-array-keys.html 2016-12-08 00:50:17 UTC (rev 209499)
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src=""
+<script>
+
+var iterationCount = 20;
+var numberDeleted = 0;
+
+// Delete all databases for the test ahead of time.
+var databasePrefix = "large-array-keys-DB-";
+for (var i = 0; i < iterationCount + 1; ++i) {
+ indexedDB.deleteDatabase(databasePrefix + i)._onsuccess_ = function() {
+ if (++numberDeleted == iterationCount)
+ startIteration();
+ }
+}
+
+var testGenerator = null;
+var db = null;
+var currentIteration = 0;
+
+PerfTestRunner.prepareToMeasureValuesAsync({
+ customIterationCount: iterationCount,
+ unit: 'ms',
+ done: function () {
+ db = null;
+ testGenerator = null;
+ PerfTestRunner.gc();
+ ++currentIteration;
+ }
+});
+
+function startIteration()
+{
+ testGenerator = runIteration();
+ nextStep();
+}
+
+function nextStep()
+{
+ testGenerator.next();
+}
+
+function createSubArray(count)
+{
+ var array = new Array(count);
+ for (var i = 0; i < count; ++i) {
+ array[i] = createSubArray(count - 1);
+ }
+ return array;
+}
+
+var numberOfSubarrays = 6;
+var array = createSubArray(numberOfSubarrays);
+array.push("variant");
+
+function *runIteration()
+{
+ var openRequest = indexedDB.open(databasePrefix + currentIteration);
+ openRequest._onupgradeneeded_ = function(event) {
+ db = event.target.result;
+ db.createObjectStore('arrays');
+ }
+ openRequest._onsuccess_ = nextStep;
+
+ yield;
+
+ var startTime = PerfTestRunner.now();
+
+ var objectStore = db.transaction('arrays', 'readwrite').objectStore('arrays');
+ objectStore.transaction._oncomplete_ = nextStep;
+
+ var numberOfInserts = 100;
+ for (var i = 0; i < numberOfInserts; ++i) {
+ array[numberOfSubarrays] = i;
+ objectStore.put("Some value!!!", array);
+ }
+
+ yield;
+
+ if (!PerfTestRunner.measureValueAsync(PerfTestRunner.now() - startTime))
+ return;
+
+ setTimeout(startIteration, 0);
+}
+
+</script>
+</body>
+</html>
Added: trunk/PerformanceTests/IndexedDB/large-binary-keys.html (0 => 209499)
--- trunk/PerformanceTests/IndexedDB/large-binary-keys.html (rev 0)
+++ trunk/PerformanceTests/IndexedDB/large-binary-keys.html 2016-12-08 00:50:17 UTC (rev 209499)
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src=""
+<script>
+
+var iterationCount = 20;
+var numberDeleted = 0;
+
+// Delete all databases for the test ahead of time.
+var databasePrefix = "large-string-keys-DB-";
+for (var i = 0; i < iterationCount + 1; ++i) {
+ indexedDB.deleteDatabase(databasePrefix + i)._onsuccess_ = function() {
+ if (++numberDeleted == iterationCount)
+ startIteration();
+ }
+}
+
+var testGenerator = null;
+var db = null;
+var currentIteration = 0;
+
+PerfTestRunner.prepareToMeasureValuesAsync({
+ customIterationCount: iterationCount,
+ unit: 'ms',
+ done: function () {
+ db = null;
+ testGenerator = null;
+ PerfTestRunner.gc();
+ ++currentIteration;
+ }
+});
+
+function startIteration()
+{
+ testGenerator = runIteration();
+ nextStep();
+}
+
+function nextStep()
+{
+ testGenerator.next();
+}
+
+var baseString;
+for (var i = 0; i < 100000; ++i)
+ baseString += "abcdefghijklmnopqrstuvwxyz";
+
+var numberOfInserts = 50;
+var array = new Array(numberOfInserts);
+for (var i = 0; i < numberOfInserts; ++i) {
+ array[i] = new ArrayBuffer(2097152);
+ var view = new Int32Array(array[i]);
+ view[view.length - 1] = i;
+}
+
+function *runIteration()
+{
+ var openRequest = indexedDB.open(databasePrefix + currentIteration);
+ openRequest._onupgradeneeded_ = function(event) {
+ db = event.target.result;
+ db.createObjectStore('arrays');
+ }
+ openRequest._onsuccess_ = nextStep;
+
+ yield;
+
+ var startTime = PerfTestRunner.now();
+
+ var objectStore = db.transaction('arrays', 'readwrite').objectStore('arrays');
+ objectStore.transaction._oncomplete_ = nextStep;
+
+ for (var i = 0; i < numberOfInserts; ++i)
+ objectStore.put("Some value!!!", array[i]);
+
+ yield;
+
+ if (!PerfTestRunner.measureValueAsync(PerfTestRunner.now() - startTime))
+ return;
+
+ setTimeout(startIteration, 0);
+}
+
+</script>
+</body>
+</html>
Added: trunk/PerformanceTests/IndexedDB/large-string-keys.html (0 => 209499)
--- trunk/PerformanceTests/IndexedDB/large-string-keys.html (rev 0)
+++ trunk/PerformanceTests/IndexedDB/large-string-keys.html 2016-12-08 00:50:17 UTC (rev 209499)
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src=""
+<script>
+
+var iterationCount = 20;
+var numberDeleted = 0;
+
+// Delete all databases for the test ahead of time.
+var databasePrefix = "large-string-keys-DB-";
+for (var i = 0; i < iterationCount + 1; ++i) {
+ indexedDB.deleteDatabase(databasePrefix + i)._onsuccess_ = function() {
+ if (++numberDeleted == iterationCount)
+ startIteration();
+ }
+}
+
+var testGenerator = null;
+var db = null;
+var currentIteration = 0;
+
+PerfTestRunner.prepareToMeasureValuesAsync({
+ customIterationCount: iterationCount,
+ unit: 'ms',
+ done: function () {
+ db = null;
+ testGenerator = null;
+ PerfTestRunner.gc();
+ ++currentIteration;
+ }
+});
+
+function startIteration()
+{
+ testGenerator = runIteration();
+ nextStep();
+}
+
+function nextStep()
+{
+ testGenerator.next();
+}
+
+var baseString;
+for (var i = 0; i < 100000; ++i)
+ baseString += "abcdefghijklmnopqrstuvwxyz";
+
+var numberOfInserts = 10;
+var array = new Array(numberOfInserts);
+for (var i = 0; i < numberOfInserts; ++i)
+ array[i] = baseString + i;
+
+function *runIteration()
+{
+ var openRequest = indexedDB.open(databasePrefix + currentIteration);
+ openRequest._onupgradeneeded_ = function(event) {
+ db = event.target.result;
+ db.createObjectStore('arrays');
+ }
+ openRequest._onsuccess_ = nextStep;
+
+ yield;
+
+ var startTime = PerfTestRunner.now();
+
+ var objectStore = db.transaction('arrays', 'readwrite').objectStore('arrays');
+ objectStore.transaction._oncomplete_ = nextStep;
+
+ for (var i = 0; i < numberOfInserts; ++i)
+ objectStore.put("Some value!!!", array[i]);
+
+ yield;
+
+ if (!PerfTestRunner.measureValueAsync(PerfTestRunner.now() - startTime))
+ return;
+
+ setTimeout(startIteration, 0);
+}
+
+</script>
+</body>
+</html>
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes