| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | require('./datasets/google_message1/proto2/benchmark_message1_proto2_pb.js');require('./datasets/google_message1/proto3/benchmark_message1_proto3_pb.js');require('./datasets/google_message2/benchmark_message2_pb.js');require('./datasets/google_message3/benchmark_message3_pb.js');require('./datasets/google_message4/benchmark_message4_pb.js');require('./benchmarks_pb.js');var fs = require('fs');var benchmarkSuite = require("./benchmark_suite.js");function getNewPrototype(name) {  var message = eval("proto." + name);  if (typeof(message) == "undefined") {    throw "type " + name + " is undefined";  }  return message;}var results = [];var json_file = "";console.log("#####################################################");console.log("Js Benchmark: ");process.argv.forEach(function(filename, index) {  if (index < 2) {    return;  }  if (filename.indexOf("--json_output") != -1) {    json_file = filename.replace(/^--json_output=/, '');    return;  }  var benchmarkDataset =      proto.benchmarks.BenchmarkDataset.deserializeBinary(fs.readFileSync(filename));  var messageList = [];  var totalBytes = 0;  benchmarkDataset.getPayloadList().forEach(function(onePayload) {    var message = getNewPrototype(benchmarkDataset.getMessageName());    messageList.push(message.deserializeBinary(onePayload));    totalBytes += onePayload.length;  });  var scenarios = benchmarkSuite.newBenchmark(      benchmarkDataset.getMessageName(), filename, "js");  scenarios.suite  .add("js deserialize", function() {    benchmarkDataset.getPayloadList().forEach(function(onePayload) {      var protoType = getNewPrototype(benchmarkDataset.getMessageName());      protoType.deserializeBinary(onePayload);    });  })  .add("js serialize", function() {    var protoType = getNewPrototype(benchmarkDataset.getMessageName());    messageList.forEach(function(message) {      message.serializeBinary();    });  })  .run({"Async": false});  results.push({    filename: filename,    benchmarks: {      protobufjs_decoding: scenarios.benches[0] * totalBytes / 1024 / 1024,      protobufjs_encoding: scenarios.benches[1] * totalBytes / 1024 / 1024    }  })  console.log("Throughput for deserialize: "    + scenarios.benches[0] * totalBytes / 1024 / 1024 + "MB/s" );  console.log("Throughput for serialize: "    + scenarios.benches[1] * totalBytes / 1024 / 1024 + "MB/s" );  console.log("");});console.log("#####################################################");if (json_file != "") {  fs.writeFile(json_file, JSON.stringify(results), (err) => {    if (err) throw err;  });}
 |