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

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: Added read stats 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 var disableUI = false;
9
10 function recordError(error) {
11 console.log(error);
12 errors.push(error);
13 }
14
15 function updateStats() {
16 if (disableUI) return;
17 var num_blobs = document.getElementById('num_blobs');
18 var total_bytes = document.getElementById('total_bytes');
19 var time = document.getElementById('time');
20 num_blobs.innerHTML = '' + blobs.length;
21 total_bytes.innerHTML = '' + bytes;
22 time.innerHTML = '' + (timeEnd - timeStart);
23 }
24
25 function createBlob(size) {
26 timeStart = performance.now();
27 var blob = new Blob([new Uint8Array(size)], {type: 'application/octet-string'} );
28 timeEnd = performance.now();
29 blobs.push(blob);
30 bytes += size;
31 updateStats();
32 }
33
34 function garbageCollect() {
35 blobs = [];
36 bytes = 0;
37 updateStats();
38 }
39
40 function addCustom() {
41 var custom_input = document.getElementById('custom_input');
42 var custom_bytes = custom_input.value;
43 createBlob(custom_bytes * 1);
44 }
45
46 function readBlobsSerially() {
47 doneReading = false;
48 errors = [];
49 if (blobs.length == 0) {
50 return;
51 }
52 timeStart = performance.now();
53 var reader = new FileReader();
54 var currentBlob = 0;
55 var totalSize = 0;
56 var error = document.getElementById('error');
57 var numRead = 0;
58 reader.onloadend = function(e) {
59 if (reader.error) {
60 if (!disableUI)
61 error.innerHTML += '<br/>Reader error:<br/>' + reader.error.message;
62 recordError('Error when reading blob ' + currentBlob + ': ' + reader.error );
63 doneReading = true;
64 return;
65 }
66 totalSize += reader.result.byteLength;
67 currentBlob++;
68 if (currentBlob < blobs.length) {
69 reader.readAsArrayBuffer(blobs[currentBlob]);
70 } else {
71 timeEnd = performance.now();
72 // we're done reading
73 if (totalSize != bytes) {
74 recordError("Sizes don't match");
75 if (!disableUI)
76 error.innerHTML += '<br/>Sizes don\'t match: ' + totalSize + ' vs ' + bytes;
77 }
78 doneReading = true;
79 updateStats();
80 }
81 }
82 reader.readAsArrayBuffer(blobs[currentBlob]);
83 }
84 function readBlobsInParallel() {
85 doneReading = false;
86 errors = [];
87 if (blobs.length == 0) {
88 return;
89 }
90 timeStart = performance.now();
91 var currentBlob = 0;
92 var totalSize = 0;
93 var error = document.getElementById('error');
94 var numRead = 0;
95 for (; currentBlob < blobs.length; currentBlob++) {
96 var genReader = function(index) {
97 var reader = new FileReader();
98 reader.onloadend = function(e) {
99 if (reader.error) {
100 if (!disableUI)
101 error.innerHTML += '<br/>Reader error:<br/>' + reader.error.message;
102 recordError('Error when reading blob ' + index + ': ' + reader.error);
103 doneReading = true;
104 return;
105 }
106 totalSize += reader.result.byteLength;
107 numRead++;
108 if (numRead >= blobs.length) {
109 timeEnd = performance.now();
110 // we're done reading
111 if (totalSize != bytes) {
112 recordError("Sizes don't match");
113 if (!disableUI)
114 error.innerHTML += '<br/>Sizes don\'t match: ' + totalSize + ' vs ' + bytes;
115 }
116 doneReading = true;
117 updateStats();
118 }
119 }
120 return reader;
121 }
122 genReader(currentBlob).readAsArrayBuffer(blobs[currentBlob]);
123 }
124 }
125 </script>
126 <div>Number of blobs: <span id="num_blobs">0</span>, total memory size: <span id ="total_bytes">0</span> bytes.</div>
127 <input type="button" id="custom_input_submit" value="Add Blob with Size" onclick ="addCustom();"/>
128 <input type="text" inputmode="numeric" id="custom_input" value=""/><br/>
129
130 Shorcut buttons for person:
131 <input type="button" value="2 bytes" onclick="createBlob(2);" />
132 <input type="button" value="1 kb" onclick="createBlob(1024);" />
133 <input type="button" value="16 kb" onclick="createBlob(16*1024);" />
134 <input type="button" value="1 mb" onclick="createBlob(1024 * 1024);" />
135 <input type="button" value="40 mb" onclick="createBlob(40 * 1024 * 1024);" />
136 <input type="button" value="400 mb" onclick="createBlob(400 * 1024 * 1024);" />
137
138 <input type="button" id="read_blobs_serial" value="Read Blobs Serially" onclick= "readBlobsSerially();" />
139 <input type="button" id="read_blobs_parallel" value="Read Blobs Parallel" onclic k="readBlobsInParallel();" /><br/>
140 <input type="button" id="garbage_collect" value="Garbage Collect Blobs" onclick= "garbageCollect();" /><br/>
141 Operation Time:
142 <div id="time"></div>
143 Errors:
144 <div id="error"></div>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698