ADD: added new version of protobuf
This commit is contained in:
66
libs/protobuf/benchmarks/protobuf.js/protobufjs_benchmark.js
Normal file
66
libs/protobuf/benchmarks/protobuf.js/protobufjs_benchmark.js
Normal file
@@ -0,0 +1,66 @@
|
||||
var root = require("./generated_bundle_code.js");
|
||||
var fs = require('fs');
|
||||
var benchmark = require("./node_modules/benchmark");
|
||||
var benchmarkSuite = require("./benchmark_suite.js");
|
||||
|
||||
|
||||
function getNewPrototype(name) {
|
||||
var message = eval("root." + name);
|
||||
if (typeof(message) == "undefined") {
|
||||
throw "type " + name + " is undefined";
|
||||
}
|
||||
return message;
|
||||
}
|
||||
|
||||
|
||||
var results = [];
|
||||
|
||||
console.log("#####################################################");
|
||||
console.log("ProtobufJs Benchmark: ");
|
||||
process.argv.forEach(function(filename, index) {
|
||||
if (index < 2) {
|
||||
return;
|
||||
}
|
||||
var benchmarkDataset =
|
||||
root.benchmarks.BenchmarkDataset.decode(fs.readFileSync(filename));
|
||||
var messageList = [];
|
||||
var totalBytes = 0;
|
||||
benchmarkDataset.payload.forEach(function(onePayload) {
|
||||
var message = getNewPrototype(benchmarkDataset.messageName);
|
||||
messageList.push(message.decode(onePayload));
|
||||
totalBytes += onePayload.length;
|
||||
});
|
||||
|
||||
var scenarios = benchmarkSuite.newBenchmark(
|
||||
benchmarkDataset.messageName, filename, "protobufjs");
|
||||
scenarios.suite
|
||||
.add("protobuf.js static decoding", function() {
|
||||
benchmarkDataset.payload.forEach(function(onePayload) {
|
||||
var protoType = getNewPrototype(benchmarkDataset.messageName);
|
||||
protoType.decode(onePayload);
|
||||
});
|
||||
})
|
||||
.add("protobuf.js static encoding", function() {
|
||||
var protoType = getNewPrototype(benchmarkDataset.messageName);
|
||||
messageList.forEach(function(message) {
|
||||
protoType.encode(message).finish();
|
||||
});
|
||||
})
|
||||
.run({"Async": false});
|
||||
|
||||
results.push({
|
||||
filename: filename,
|
||||
benchmarks: {
|
||||
protobufjs_decoding: scenarios.benches[0] * totalBytes,
|
||||
protobufjs_encoding: scenarios.benches[1] * totalBytes
|
||||
}
|
||||
})
|
||||
|
||||
console.log("Throughput for decoding: "
|
||||
+ scenarios.benches[0] * totalBytes / 1024 / 1024 + "MB/s" );
|
||||
console.log("Throughput for encoding: "
|
||||
+ scenarios.benches[1] * totalBytes / 1024 / 1024 + "MB/s" );
|
||||
console.log("");
|
||||
});
|
||||
console.log("#####################################################");
|
||||
|
||||
Reference in New Issue
Block a user