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

Side by Side Diff: chrome/test/data/third_party/spaceport/bin/condense.js

Issue 10134041: Add test data for spaceport benchmark. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 var NUMERIC_SORT = function(a,b){ return a-b; };
2
3 var fs = require('fs');
4 var path = require('path');
5
6 var jsBase = __dirname + '/../js';
7 var un = require(jsBase + '/unrequire');
8 un.require.config({ baseUrl: jsBase });
9
10 var dataStructure = {};
11
12 var basicDataStructure = {};
13
14 var fileCount = 0;
15
16 var THING = 'sprites';
17 var PARAM = 'image';
18
19 var RESULTS_DIR = path.join(__dirname, '..', 'results');
20 var INPUT_DIR = path.join(RESULTS_DIR, 'raw');
21 var OUTPUT_DIR = path.join(RESULTS_DIR);
22
23 un.require( ['util/report'], function(report){
24 fs.readdir( INPUT_DIR, function(err, files){
25 if( err ){
26 throw err;
27 }
28 var toProcess = files.filter( function(filename){
29 return filename.match(/\.json$/);
30 });
31
32 fileCount = toProcess.length;
33
34 toProcess.forEach( function(filename){
35 fs.readFile(path.join(INPUT_DIR, filename), 'utf8', func tion (err, json) {
36 if( err ){
37 throw err;
38 }
39 var data = JSON.parse(json);
40 var name = data.userData.agentMetadata.name;
41 var browser = data.userData.agentMetadata.browse r;
42 var userAgent = data.userData.agentMetadata.user Agent;
43 var type = data.userData.agentMetadata.type;
44 var combo = type + "-" + browser;
45
46 if(!dataStructure[combo]){
47 dataStructure[combo] = [
48 [],
49 [type,browser],
50 []
51 ];
52 }
53
54 var row = [name];
55 var columnLabels = [""];
56 Object.keys(data.userData.results[THING][PARAM]) .sort().forEach( function(key){
57 var spriteResults = data.userData.result s[THING][PARAM][key];
58
59 // TODO: do others
60 var translate = spriteResults.translate;
61 var vals = [null];
62 if( translate ){
63 vals = [translate.objectCount];
64
65 if(!basicDataStructure[type]){
66 basicDataStructure[type] = {};
67 }
68 if(!basicDataStructure[type][bro wser]){
69 basicDataStructure[type] [browser] = {};
70 }
71 if(!basicDataStructure[type][bro wser][key]){
72 basicDataStructure[type] [browser][key] = {};
73 }
74 if(!basicDataStructure[type][bro wser][key][name]){
75 basicDataStructure[type] [browser][key][name] = {};
76 }
77 basicDataStructure[type][browser ][key][name] = translate.rawData.map( function(tuple){
78 return [tuple[0], tuple[ 1].js, tuple[1].fps];
79 });
80 }
81
82 columnLabels = columnLabels.concat( key );
83 row = row.concat( vals );
84 });
85
86 dataStructure[combo][2] = columnLabels;
87 dataStructure[combo].push( row );
88
89 fileCount -= 1;
90 if( fileCount === 0 ){
91 foo();
92 bar();
93 }
94 });
95 });
96 });
97
98 function foo(){
99 var toSave = [];
100 var roundUp = [[], ["","best of best device","average of each de vice's best","best of worst device"]];
101 Object.keys(dataStructure).forEach( function(combo){
102 var rows = dataStructure[combo];
103 var averages = ['averages'];
104 for( var i = 1; i < rows[2].length; i++ ){
105 var sum = 0;
106 var legitCount = 0;
107 for( var j = 3; j < rows.length; j++ ){
108 var temp = rows[j][i];
109 if( temp !== null ){
110 legitCount += 1;
111 sum += temp;
112 }
113 }
114 var avg = sum / legitCount;
115 averages[i] = avg;
116 }
117
118 var bestTheWorstPhoneCanDo = Infinity;
119 var bestTheBestPhoneCanDo = -Infinity;
120 var averageOfEachBestTechnique = 0;
121 var phoneCount = 0;
122 for( var j = 3; j < rows.length; j++ ){
123 phoneCount += 1;
124 var maxForPhone = -Infinity;
125 for( var i = 1; i < rows[2].length; i++ ){
126 var temp = rows[j][i];
127 if( temp !== null ){
128 maxForPhone = Math.max( maxForPh one, temp );
129 }
130 }
131
132 bestTheWorstPhoneCanDo = Math.min( bestTheWorstP honeCanDo, maxForPhone );
133 bestTheBestPhoneCanDo = Math.max( bestTheBestPho neCanDo, maxForPhone );
134 averageOfEachBestTechnique += maxForPhone;
135 }
136 averageOfEachBestTechnique = (averageOfEachBestTechnique / phoneCount);
137
138 toSave = toSave.concat( rows, [averages] );
139 roundUp.push( [combo, bestTheBestPhoneCanDo, averageOfEa chBestTechnique, bestTheWorstPhoneCanDo] );
140 });
141 console.log( roundUp );
142 toSave = toSave.concat( roundUp );
143
144 fs.writeFile( path.join(OUTPUT_DIR, THING + "-" + PARAM + ".csv" ), report.csvByTable(toSave), 'utf8', function(err){
145 if(err) throw err;
146 console.log("saved!");
147 } );
148 }
149
150 function bar(){
151 var output = [];
152 Object.keys( basicDataStructure ).sort().forEach( function(type) {
153 output.push( [type] );
154 Object.keys( basicDataStructure[type] ).sort().forEach( function(browser){
155 output.push( ["", browser] );
156 Object.keys( basicDataStructure[type][browser] ) .sort().forEach( function(techniqueName){
157 output.push( ["", "", techniqueName] );
158
159 var uniqueXValues = [];
160
161 Object.keys( basicDataStructure[type][br owser][techniqueName] ).sort().forEach( function(deviceName){
162 var data = basicDataStructure[ty pe][browser][techniqueName][deviceName];
163
164 data.forEach( function(tuple){
165 var objectCount = tuple[ 0];
166 if( uniqueXValues.indexO f(objectCount) === -1 ){
167 uniqueXValues.pu sh( objectCount );
168 }
169 });
170 });
171
172 uniqueXValues.sort( NUMERIC_SORT );
173
174 output.push( ["", "", "", ""].concat( un iqueXValues ) );
175
176 Object.keys( basicDataStructure[type][br owser][techniqueName] ).sort().forEach( function(deviceName){
177 var data = basicDataStructure[ty pe][browser][techniqueName][deviceName];
178
179 var yValues = uniqueXValues.map( function(numObjects){
180 var fps = fpsForObjectCo unt(data, numObjects);
181 if( fps === null ){
182 return '';
183 }else{
184 return fps;
185 }
186 });
187
188 output.push( ["", "", "", device Name].concat( yValues ) );
189 });
190 });
191 });
192 });
193
194
195 fs.writeFile( path.join(OUTPUT_DIR, THING + "-" + PARAM + "-RAW. csv"), report.csvByTable(output), 'utf8', function(err){
196 if(err) throw err;
197 console.log("saved RAW!");
198 } );
199 }
200 });
201
202 function fpsForObjectCount( data, objectCount ){
203 for( var i = 0; i < data.length; i++ ){
204 if( data[i][0] === objectCount ){
205 return data[i][2];
206 }
207 }
208 return null;
209 }
OLDNEW
« no previous file with comments | « chrome/test/data/third_party/spaceport/assets/silence.wav ('k') | chrome/test/data/third_party/spaceport/bin/json2csv.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698