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

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: copyright fix Created 5 years, 6 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
« no previous file with comments | « tools/perf/benchmarks/blob_storage.py ('k') | tools/perf/page_sets/blob_workshop.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 createAndRead(size) {
26 doneReading = false;
27 errors = [];
28 var reader = new FileReader();
29 var currentBlob = 0;
30 var totalSize = 0;
31 var error = document.getElementById('error');
32 var numRead = 0;
33
34 var blob = new Blob([new Uint8Array(size)], {type: 'application/octet-string'} );
35
36 reader.onloadend = function(e) {
37 if (reader.error) {
38 recordError('Error when reading blob: ' + reader.error);
39 doneReading = true;
40 return;
41 }
42 if (reader.result.byteLength != size) {
43 recordError("Sizes don't match");
44 }
45 doneReading = true;
46 }
47 reader.readAsArrayBuffer(blob);
48 }
49
50 function createBlob(size) {
51 timeStart = performance.now();
52 var blob = new Blob([new Uint8Array(size)], {type: 'application/octet-string'} );
53 timeEnd = performance.now();
54 blobs.push(blob);
55 bytes += size;
56 updateStats();
57 }
58
59 function garbageCollect() {
60 blobs = [];
61 bytes = 0;
62 updateStats();
63 }
64
65 function addCustom() {
66 var custom_input = document.getElementById('custom_input');
67 var custom_bytes = custom_input.value;
68 createBlob(custom_bytes * 1);
69 }
70
71 function readBlobsSerially() {
72 doneReading = false;
73 errors = [];
74 if (blobs.length == 0) {
75 return;
76 }
77 timeStart = performance.now();
78 var reader = new FileReader();
79 var currentBlob = 0;
80 var totalSize = 0;
81 var error = document.getElementById('error');
82 var numRead = 0;
83 reader.onloadend = function(e) {
84 if (reader.error) {
85 if (!disableUI)
86 error.innerHTML += '<br/>Reader error:<br/>' + reader.error.message;
87 recordError('Error when reading blob ' + currentBlob + ': ' + reader.error );
88 doneReading = true;
89 return;
90 }
91 totalSize += reader.result.byteLength;
92 currentBlob++;
93 if (currentBlob < blobs.length) {
94 reader.readAsArrayBuffer(blobs[currentBlob]);
95 } else {
96 timeEnd = performance.now();
97 // we're done reading
98 if (totalSize != bytes) {
99 recordError("Sizes don't match");
100 if (!disableUI)
101 error.innerHTML += '<br/>Sizes don\'t match: ' + totalSize + ' vs ' + bytes;
102 }
103 doneReading = true;
104 updateStats();
105 }
106 }
107 reader.readAsArrayBuffer(blobs[currentBlob]);
108 }
109 function readBlobsInParallel() {
110 doneReading = false;
111 errors = [];
112 if (blobs.length == 0) {
113 return;
114 }
115 timeStart = performance.now();
116 var currentBlob = 0;
117 var totalSize = 0;
118 var error = document.getElementById('error');
119 var numRead = 0;
120 for (; currentBlob < blobs.length; currentBlob++) {
121 var genReader = function(index) {
122 var reader = new FileReader();
123 reader.onloadend = function(e) {
124 if (reader.error) {
125 if (!disableUI)
126 error.innerHTML += '<br/>Reader error:<br/>' + reader.error.message;
127 recordError('Error when reading blob ' + index + ': ' + reader.error);
128 doneReading = true;
129 return;
130 }
131 totalSize += reader.result.byteLength;
132 numRead++;
133 if (numRead >= blobs.length) {
134 timeEnd = performance.now();
135 // we're done reading
136 if (totalSize != bytes) {
137 recordError("Sizes don't match");
138 if (!disableUI)
139 error.innerHTML += '<br/>Sizes don\'t match: ' + totalSize + ' vs ' + bytes;
140 }
141 doneReading = true;
142 updateStats();
143 }
144 }
145 return reader;
146 }
147 genReader(currentBlob).readAsArrayBuffer(blobs[currentBlob]);
148 }
149 }
150 </script>
151 <div>Number of blobs: <span id="num_blobs">0</span>, total memory size: <span id ="total_bytes">0</span> bytes.</div>
152 <input type="button" id="custom_input_submit" value="Add Blob with Size" onclick ="addCustom();"/>
153 <input type="text" inputmode="numeric" id="custom_input" value=""/><br/>
154
155 Shorcut buttons for person:
156 <input type="button" value="2 bytes" onclick="createBlob(2);" />
157 <input type="button" value="1 kb" onclick="createBlob(1024);" />
158 <input type="button" value="16 kb" onclick="createBlob(16*1024);" />
159 <input type="button" value="1 mb" onclick="createBlob(1024 * 1024);" />
160 <input type="button" value="40 mb" onclick="createBlob(40 * 1024 * 1024);" />
161 <input type="button" value="400 mb" onclick="createBlob(400 * 1024 * 1024);" />
162
163 <input type="button" id="read_blobs_serial" value="Read Blobs Serially" onclick= "readBlobsSerially();" />
164 <input type="button" id="read_blobs_parallel" value="Read Blobs Parallel" onclic k="readBlobsInParallel();" /><br/>
165 <input type="button" id="garbage_collect" value="Garbage Collect Blobs" onclick= "garbageCollect();" /><br/>
166 Operation Time:
167 <div id="time"></div>
168 Errors:
169 <div id="error"></div>
OLDNEW
« no previous file with comments | « tools/perf/benchmarks/blob_storage.py ('k') | tools/perf/page_sets/blob_workshop.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698