Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(104)

Side by Side Diff: tools/perf/page_sets/blob/blob-workshop.html

Issue 1104053006: [Storage] Blob Storage perf tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Whoops, forgot timeline metric Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 <script>
2 var blobs = [];
3 var bytes = 0;
4 var timeStart;
5 var timeEnd;
6 var doneReading = false;
7 var errors = [];
8
9 var interactionReadBlob = 'Interaction.ReadBlob';
10 var interactionWriteBlob = 'Interaction.WriteBlob';
11
12 function recordError(error) {
13 console.log(error);
14 errors.push(error);
15 }
16
17 function updateStats() {
18 var num_blobs = document.getElementById('num_blobs');
19 var total_bytes = document.getElementById('total_bytes');
20 var time = document.getElementById('time');
21 num_blobs.innerHTML = '' + blobs.length;
22 total_bytes.innerHTML = '' + bytes;
23 time.innerHTML = '' + (timeEnd - timeStart);
24 }
25
26 function createBlob(size) {
27 timeStart = performance.now();
28 console.time(interactionWriteBlob);
29 var blob = new Blob([new Uint8Array(size)], {type: 'application/octet-string'} );
30 console.timeEnd(interactionWriteBlob);
31 timeEnd = performance.now();
32 blobs.push(blob);
33 bytes += size;
34 updateStats();
35 }
36
37 function garbageCollectClicked() {
38 blobs = [];
39 bytes = 0;
40 updateStats();
41 }
42 function addCustom() {
43 var custom_input = document.getElementById('custom_input');
44 var custom_bytes = custom_input.value;
45 createBlob(custom_bytes * 1);
46 }
47 function readBlobsSerially() {
48 doneReading = false;
49 errors = [];
50 if (blobs.length == 0) {
51 return;
52 }
53 timeStart = performance.now();
54 var reader = new FileReader();
55 var currentBlob = 0;
56 var totalSize = 0;
57 var error = document.getElementById('error');
58 var numRead = 0;
59 reader.onloadend = function(e) {
60 if (reader.error) {
61 error.innerHTML += '<br/>Reader error:<br/>' + reader.error.message;
62 recordError('Got error when reading blob ' + currentBlob, reader.error);
63 console.timeEnd(interactionReadBlob);
64 doneReading = true;
65 return;
66 }
67 totalSize += reader.result.byteLength;
68 currentBlob++;
69 if (currentBlob < blobs.length) {
70 reader.readAsArrayBuffer(blobs[currentBlob]);
71 } else {
72 timeEnd = performance.now();
73 console.timeEnd(interactionReadBlob);
74 doneReading = true;
75 // we're done reading
76 if (totalSize != bytes) {
77 recordError("Sizes don't match");
78 error.innerHTML += '<br/>Sizes don\'t match: ' + totalSize + ' vs ' + by tes;
79 }
80 updateStats();
81 }
82 }
83 console.time(interactionReadBlob);
84 reader.readAsArrayBuffer(blobs[currentBlob]);
85 }
86 function readBlobsInParallel() {
87 doneReading = false;
88 errors = [];
89 if (blobs.length == 0) {
90 return;
91 }
92 timeStart = performance.now();
93 var currentBlob = 0;
94 var totalSize = 0;
95 var error = document.getElementById('error');
96 var numRead = 0;
97 console.time(interactionReadBlob);
98 for (; currentBlob < blobs.length; currentBlob++) {
99 var genReader = function(index) {
100 var reader = new FileReader();
101 reader.onloadend = function(e) {
102 if (reader.error) {
103 error.innerHTML += '<br/>Reader error:<br/>' + reader.error.message;
104 recordError('Got error when reading blob ' + index, reader.error);
105 console.timeEnd(interactionReadBlob);
106 doneReading = true;
107 return;
108 }
109 totalSize += reader.result.byteLength;
110 numRead++;
111 if (numRead >= blobs.length) {
112 timeEnd = performance.now();
113 console.timeEnd(interactionReadBlob);
114 doneReading = true;
115 // we're done reading
116 if (totalSize != bytes) {
117 recordError("Sizes don't match");
118 error.innerHTML += '<br/>Sizes don\'t match: ' + totalSize + ' vs ' + bytes;
119 }
120 updateStats();
121 }
122 }
123 return reader;
124 }
125 genReader(currentBlob).readAsArrayBuffer(blobs[currentBlob]);
126 }
127 }
128 </script>
129 <div>Number of blobs: <span id="num_blobs">0</span>, total memory size: <span id ="total_bytes">0</span> bytes.</div>
130 <input type="button" id="custom_input_submit" value="Add Blob with Size" onclick ="addCustom();"/>
131 <input type="text" inputmode="numeric" id="custom_input" value=""/><br/>
132
133 Shorcut buttons for person:
134 <input type="button" value="2 bytes" onclick="createBlob(2);" />
135 <input type="button" value="1 kb" onclick="createBlob(1024);" />
136 <input type="button" value="16 kb" onclick="createBlob(16*1024);" />
137 <input type="button" value="1 mb" onclick="createBlob(1024 * 1024);" />
138 <input type="button" value="40 mb" onclick="createBlob(40 * 1024 * 1024);" />
139 <input type="button" value="400 mb" onclick="createBlob(400 * 1024 * 1024);" />
140
141 <input type="button" id="read_blobs_serial" value="Read Blobs Serially" onclick= "readBlobsSerially();" />
142 <input type="button" id="read_blobs_parallel" value="Read Blobs Parallel" onclic k="readBlobsInParallel();" /><br/>
143 <input type="button" id="garbage_collect" value="Garbage Collect Blobs" onclick= "garbageCollectClicked();" /><br/>
144 Operation Time:
145 <div id="time"></div>
146 Errors:
147 <div id="error"></div>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698