|
@@ -0,0 +1,70 @@
|
|
|
+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 = [];
|
|
|
+
|
|
|
+console.log("#####################################################");
|
|
|
+console.log("Js Benchmark: ");
|
|
|
+process.argv.forEach(function(filename, index) {
|
|
|
+ if (index < 2) {
|
|
|
+ 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 senarios = benchmarkSuite.newBenchmark(
|
|
|
+ benchmarkDataset.getMessageName(), filename, "js");
|
|
|
+ senarios.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: senarios.benches[0] * totalBytes,
|
|
|
+ protobufjs_encoding: senarios.benches[1] * totalBytes
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ console.log("Throughput for deserialize: "
|
|
|
+ + senarios.benches[0] * totalBytes / 1024 / 1024 + "MB/s" );
|
|
|
+ console.log("Throughput for serialize: "
|
|
|
+ + senarios.benches[1] * totalBytes / 1024 / 1024 + "MB/s" );
|
|
|
+ console.log("");
|
|
|
+});
|
|
|
+console.log("#####################################################");
|
|
|
+
|