Built motion from commit 6a09e18b.|2.6.11
[motion2.git] / legacy-libs / grpc / node_modules / protobufjs / tests / bench.js
diff --git a/legacy-libs/grpc/node_modules/protobufjs/tests/bench.js b/legacy-libs/grpc/node_modules/protobufjs/tests/bench.js
new file mode 100644 (file)
index 0000000..7f3c0cd
--- /dev/null
@@ -0,0 +1,48 @@
+var ProtoBuf = require("../index.js");\r
+\r
+var sample = {\r
+    id: 1,\r
+    name: "John123",\r
+    password: "helloworld"\r
+};\r
+\r
+console.log("Sample: `"+JSON.stringify(sample, null, 4));\r
+console.log("\n");\r
+\r
+var proto = " message Sample {" +\r
+    "required uint32 id = 1;" +\r
+    "required string name = 2;" +\r
+    "required string password = 3;" +\r
+    "}";\r
+\r
+var builder = ProtoBuf.loadProto(proto, "bench.proto"),\r
+    Sample = builder.build("Sample");\r
+\r
+// Compare size\r
+console.log("Encoding size");\r
+console.log("-------------");\r
+var jsonData = new Buffer(JSON.stringify(sample), "utf8"),\r
+    protoData = new Sample(sample).toBuffer();\r
+console.log("* Encoded sample size as JSON: "+jsonData.length+" bytes");\r
+console.log("* Encoded sample size as protocol buffer: "+protoData.length+" bytes");\r
+console.log("");\r
+\r
+// Compare encoding speed\r
+console.log("Encoding speed");\r
+console.log("--------------");\r
+(function() {\r
+    // Assuming that a receive buffer is used\r
+    var buf = ProtoBuf.ByteBuffer.allocate(64);\r
+    var protoSample = new Sample(sample),\r
+        n = 100000, k = (n/1000)+'k';\r
+    console.time("* ProtoBuf encode "+k);\r
+    for (var i=0; i<n; ++i)\r
+        protoSample.encode(buf, true),\r
+        buf.flip();\r
+    console.timeEnd("* ProtoBuf encode "+k);\r
+    console.time("* ProtoBuf decode "+k);\r
+    for (var i=0; i<n; ++i)\r
+        Sample.decode(buf),\r
+        buf.flip();\r
+    console.timeEnd("* ProtoBuf decode "+k);\r
+})();\r