pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/WebKit/WebKit-http/commit/f25ea0c1ae8464da4b9e1cec118c021a3a8312eb

et" href="https://github.githubassets.com/assets/global-d18f184ea1a06a2c.css" /> Add IDB perf tests stressing key size. · WebKit/WebKit-http@f25ea0c · GitHub
Skip to content
This repository was archived by the owner on Jun 24, 2022. It is now read-only.

Commit f25ea0c

Browse files
author
beidson@apple.com
committed
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. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@209499 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 1e23924 commit f25ea0c

4 files changed

Lines changed: 270 additions & 0 deletions

File tree

PerformanceTests/ChangeLog

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
2016-12-07 Brady Eidson <beidson@apple.com>
2+
3+
Add IDB perf tests stressing key size.
4+
https://bugs.webkit.org/show_bug.cgi?id=165567
5+
6+
Reviewed by Alex Christensen.
7+
8+
* IndexedDB/large-array-keys.html: Added.
9+
* IndexedDB/large-binary-keys.html: Added.
10+
* IndexedDB/large-string-keys.html: Added.
11+
112
2016-12-05 Brady Eidson <beidson@apple.com>
213

314
Add an IndexedDB perf test to PerformanceTests.
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<body>
4+
<script src="../resources/runner.js"></script>
5+
<script>
6+
7+
var iterationCount = 20;
8+
var numberDeleted = 0;
9+
10+
// Delete all databases for the test ahead of time.
11+
var databasePrefix = "large-array-keys-DB-";
12+
for (var i = 0; i < iterationCount + 1; ++i) {
13+
indexedDB.deleteDatabase(databasePrefix + i).onsuccess = function() {
14+
if (++numberDeleted == iterationCount)
15+
startIteration();
16+
}
17+
}
18+
19+
var testGenerator = null;
20+
var db = null;
21+
var currentIteration = 0;
22+
23+
PerfTestRunner.prepareToMeasureValuesAsync({
24+
customIterationCount: iterationCount,
25+
unit: 'ms',
26+
done: function () {
27+
db = null;
28+
testGenerator = null;
29+
PerfTestRunner.gc();
30+
++currentIteration;
31+
}
32+
});
33+
34+
function startIteration()
35+
{
36+
testGenerator = runIteration();
37+
nextStep();
38+
}
39+
40+
function nextStep()
41+
{
42+
testGenerator.next();
43+
}
44+
45+
function createSubArray(count)
46+
{
47+
var array = new Array(count);
48+
for (var i = 0; i < count; ++i) {
49+
array[i] = createSubArray(count - 1);
50+
}
51+
return array;
52+
}
53+
54+
var numberOfSubarrays = 6;
55+
var array = createSubArray(numberOfSubarrays);
56+
array.push("variant");
57+
58+
function *runIteration()
59+
{
60+
var openRequest = indexedDB.open(databasePrefix + currentIteration);
61+
openRequest.onupgradeneeded = function(event) {
62+
db = event.target.result;
63+
db.createObjectStore('arrays');
64+
}
65+
openRequest.onsuccess = nextStep;
66+
67+
yield;
68+
69+
var startTime = PerfTestRunner.now();
70+
71+
var objectStore = db.transaction('arrays', 'readwrite').objectStore('arrays');
72+
objectStore.transaction.oncomplete = nextStep;
73+
74+
var numberOfInserts = 100;
75+
for (var i = 0; i < numberOfInserts; ++i) {
76+
array[numberOfSubarrays] = i;
77+
objectStore.put("Some value!!!", array);
78+
}
79+
80+
yield;
81+
82+
if (!PerfTestRunner.measureValueAsync(PerfTestRunner.now() - startTime))
83+
return;
84+
85+
setTimeout(startIteration, 0);
86+
}
87+
88+
</script>
89+
</body>
90+
</html>
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<body>
4+
<script src="../resources/runner.js"></script>
5+
<script>
6+
7+
var iterationCount = 20;
8+
var numberDeleted = 0;
9+
10+
// Delete all databases for the test ahead of time.
11+
var databasePrefix = "large-string-keys-DB-";
12+
for (var i = 0; i < iterationCount + 1; ++i) {
13+
indexedDB.deleteDatabase(databasePrefix + i).onsuccess = function() {
14+
if (++numberDeleted == iterationCount)
15+
startIteration();
16+
}
17+
}
18+
19+
var testGenerator = null;
20+
var db = null;
21+
var currentIteration = 0;
22+
23+
PerfTestRunner.prepareToMeasureValuesAsync({
24+
customIterationCount: iterationCount,
25+
unit: 'ms',
26+
done: function () {
27+
db = null;
28+
testGenerator = null;
29+
PerfTestRunner.gc();
30+
++currentIteration;
31+
}
32+
});
33+
34+
function startIteration()
35+
{
36+
testGenerator = runIteration();
37+
nextStep();
38+
}
39+
40+
function nextStep()
41+
{
42+
testGenerator.next();
43+
}
44+
45+
var baseString;
46+
for (var i = 0; i < 100000; ++i)
47+
baseString += "abcdefghijklmnopqrstuvwxyz";
48+
49+
var numberOfInserts = 50;
50+
var array = new Array(numberOfInserts);
51+
for (var i = 0; i < numberOfInserts; ++i) {
52+
array[i] = new ArrayBuffer(2097152);
53+
var view = new Int32Array(array[i]);
54+
view[view.length - 1] = i;
55+
}
56+
57+
function *runIteration()
58+
{
59+
var openRequest = indexedDB.open(databasePrefix + currentIteration);
60+
openRequest.onupgradeneeded = function(event) {
61+
db = event.target.result;
62+
db.createObjectStore('arrays');
63+
}
64+
openRequest.onsuccess = nextStep;
65+
66+
yield;
67+
68+
var startTime = PerfTestRunner.now();
69+
70+
var objectStore = db.transaction('arrays', 'readwrite').objectStore('arrays');
71+
objectStore.transaction.oncomplete = nextStep;
72+
73+
for (var i = 0; i < numberOfInserts; ++i)
74+
objectStore.put("Some value!!!", array[i]);
75+
76+
yield;
77+
78+
if (!PerfTestRunner.measureValueAsync(PerfTestRunner.now() - startTime))
79+
return;
80+
81+
setTimeout(startIteration, 0);
82+
}
83+
84+
</script>
85+
</body>
86+
</html>
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<body>
4+
<script src="../resources/runner.js"></script>
5+
<script>
6+
7+
var iterationCount = 20;
8+
var numberDeleted = 0;
9+
10+
// Delete all databases for the test ahead of time.
11+
var databasePrefix = "large-string-keys-DB-";
12+
for (var i = 0; i < iterationCount + 1; ++i) {
13+
indexedDB.deleteDatabase(databasePrefix + i).onsuccess = function() {
14+
if (++numberDeleted == iterationCount)
15+
startIteration();
16+
}
17+
}
18+
19+
var testGenerator = null;
20+
var db = null;
21+
var currentIteration = 0;
22+
23+
PerfTestRunner.prepareToMeasureValuesAsync({
24+
customIterationCount: iterationCount,
25+
unit: 'ms',
26+
done: function () {
27+
db = null;
28+
testGenerator = null;
29+
PerfTestRunner.gc();
30+
++currentIteration;
31+
}
32+
});
33+
34+
function startIteration()
35+
{
36+
testGenerator = runIteration();
37+
nextStep();
38+
}
39+
40+
function nextStep()
41+
{
42+
testGenerator.next();
43+
}
44+
45+
var baseString;
46+
for (var i = 0; i < 100000; ++i)
47+
baseString += "abcdefghijklmnopqrstuvwxyz";
48+
49+
var numberOfInserts = 10;
50+
var array = new Array(numberOfInserts);
51+
for (var i = 0; i < numberOfInserts; ++i)
52+
array[i] = baseString + i;
53+
54+
function *runIteration()
55+
{
56+
var openRequest = indexedDB.open(databasePrefix + currentIteration);
57+
openRequest.onupgradeneeded = function(event) {
58+
db = event.target.result;
59+
db.createObjectStore('arrays');
60+
}
61+
openRequest.onsuccess = nextStep;
62+
63+
yield;
64+
65+
var startTime = PerfTestRunner.now();
66+
67+
var objectStore = db.transaction('arrays', 'readwrite').objectStore('arrays');
68+
objectStore.transaction.oncomplete = nextStep;
69+
70+
for (var i = 0; i < numberOfInserts; ++i)
71+
objectStore.put("Some value!!!", array[i]);
72+
73+
yield;
74+
75+
if (!PerfTestRunner.measureValueAsync(PerfTestRunner.now() - startTime))
76+
return;
77+
78+
setTimeout(startIteration, 0);
79+
}
80+
81+
</script>
82+
</body>
83+
</html>

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy