Skip to content

Commit

Permalink
update benchmarks #319
Browse files Browse the repository at this point in the history
  • Loading branch information
icebob committed Jul 9, 2018
1 parent 38c1ef2 commit 0729ea7
Show file tree
Hide file tree
Showing 8 changed files with 239 additions and 172 deletions.
30 changes: 19 additions & 11 deletions benchmark/suites/cachers.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ bench3.add("With cloning", done => {
memCacherCloning.get(key).then(done);
});

benchmark.run([/*bench1, bench2, */bench3]).then(() => {
benchmark.run([bench1, bench2, bench3]).then(() => {
redisCacher.close();
});

Expand All @@ -72,24 +72,32 @@ benchmark.run([/*bench1, bench2, */bench3]).then(() => {
Platform info:
==============
Windows_NT 6.1.7601 x64
Node.JS: 8.9.4
V8: 6.1.534.50
Node.JS: 8.11.0
V8: 6.2.414.50
Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz × 8
Suite: Set & get 1k data with cacher
√ Memory* 2,066,824 rps
√ Redis* 10,915 rps
√ Memory* 2,233,922 rps
√ Redis* 10,729 rps
Memory* 0% (2,066,824 rps) (avg: 483ns)
Redis* -99.47% (10,915 rps) (avg: 91μs)
Memory* 0% (2,233,922 rps) (avg: 447ns)
Redis* -99.52% (10,729 rps) (avg: 93μs)
-----------------------------------------------------------------------
Suite: Test getCacheKey
√ Dynamic 679,228 rps
√ Static 5,981,643 rps
√ Dynamic 2,783,031 rps
√ Static 6,787,824 rps
Dynamic -88.64% (679,228 rps) (avg: 1μs)
Static 0% (5,981,643 rps) (avg: 167ns)
Dynamic -59% (2,783,031 rps) (avg: 359ns)
Static 0% (6,787,824 rps) (avg: 147ns)
-----------------------------------------------------------------------
Suite: Test cloning on MemoryCacher
√ Without cloning* 4,608,810 rps
√ With cloning* 182,449 rps
Without cloning* 0% (4,608,810 rps) (avg: 216ns)
With cloning* -96.04% (182,449 rps) (avg: 5μs)
-----------------------------------------------------------------------
Expand Down
68 changes: 33 additions & 35 deletions benchmark/suites/call.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
"use strict";

let Promise = require("bluebird");

const Benchmarkify = require("benchmarkify");
const benchmark = new Benchmarkify("Broker call benchmarks").printHeader();

Expand Down Expand Up @@ -134,7 +136,7 @@ const bench5 = benchmark.createSuite("Call with metrics");
});
})();

benchmark.run([bench1, bench2, bench3, bench4, bench5]);
Promise.delay(1000).then(() => benchmark.run([bench1, bench2, bench3, bench4, bench5]));

/*
Expand All @@ -145,58 +147,54 @@ benchmark.run([bench1, bench2, bench3, bench4, bench5]);
Platform info:
==============
Windows_NT 6.1.7601 x64
Node.JS: 8.9.4
V8: 6.1.534.50
Node.JS: 8.11.0
V8: 6.2.414.50
Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz × 8
Suite: Call methods
√ broker.call (normal)* 1,738,486 rps
√ broker.call (with params)* 1,807,759 rps
√ broker.call (normal)* 1,660,419 rps
√ broker.call (with params)* 1,706,815 rps
broker.call (normal)* (#) 0% (1,738,486 rps) (avg: 575ns)
broker.call (with params)* +3.98% (1,807,759 rps) (avg: 553ns)
broker.call (normal)* (#) 0% (1,660,419 rps) (avg: 602ns)
broker.call (with params)* +2.79% (1,706,815 rps) (avg: 585ns)
-----------------------------------------------------------------------
Suite: Call with middlewares
√ Call without middlewares* 1,716,913 rps
√ Call with 1 middleware* 1,662,845 rps
√ Call with 5 middlewares* 1,666,777 rps
√ Call without middlewares* 1,604,740 rps
√ Call with 1 middleware* 1,195,061 rps
√ Call with 5 middlewares* 655,822 rps
Call without middlewares* (#) 0% (1,716,913 rps) (avg: 582ns)
Call with 1 middleware* -3.15% (1,662,845 rps) (avg: 601ns)
Call with 5 middlewares* -2.92% (1,666,777 rps) (avg: 599ns)
Call without middlewares* (#) 0% (1,604,740 rps) (avg: 623ns)
Call with 1 middleware* -25.53% (1,195,061 rps) (avg: 836ns)
Call with 5 middlewares* -59.13% (655,822 rps) (avg: 1μs)
-----------------------------------------------------------------------
Suite: Call with cachers
√ No cacher* 1,344,920 rps
√ Built-in cacher* 315,524 rps
√ Built-in cacher (keys filter)* 964,395 rps
√ With statistics* 811,574 rps
No cacher* (#) 0% (1,344,920 rps) (avg: 743ns)
Built-in cacher* -76.54% (315,524 rps) (avg: 3μs)
Built-in cacher (keys filter)* -28.29% (964,395 rps) (avg: 1μs)
With statistics* -39.66% (811,574 rps) (avg: 1μs)
√ No cacher* 1,180,739 rps
√ Built-in cacher* 611,911 rps
√ Built-in cacher (keys filter)* 893,071 rps
No cacher* (#) 0% (1,180,739 rps) (avg: 846ns)
Built-in cacher* -48.18% (611,911 rps) (avg: 1μs)
Built-in cacher (keys filter)* -24.36% (893,071 rps) (avg: 1μs)
-----------------------------------------------------------------------
Suite: Call with param validator
√ No validator* 1,055,690 rps
√ With validator passes* 1,082,886 rps
√ With validator fail* 6,994 rps
√ No validator* 1,192,808 rps
√ With validator passes* 1,138,172 rps
√ With validator fail* 4,829 rps
No validator* (#) 0% (1,055,690 rps) (avg: 947ns)
With validator passes* +2.58% (1,082,886 rps) (avg: 923ns)
With validator fail* -99.34% (6,994 rps) (avg: 142μs)
No validator* (#) 0% (1,192,808 rps) (avg: 838ns)
With validator passes* -4.58% (1,138,172 rps) (avg: 878ns)
With validator fail* -99.6% (4,829 rps) (avg: 207μs)
-----------------------------------------------------------------------
Suite: Call with statistics & metrics
√ No statistics* 1,311,912 rps
√ With metrics* 453,033 rps
√ With metrics & statistics* 396,287 rps
Suite: Call with metrics
√ No metrics* 1,601,825 rps
√ With metrics* 493,759 rps
No statistics* (#) 0% (1,311,912 rps) (avg: 762ns)
With metrics* -65.47% (453,033 rps) (avg: 2μs)
With metrics & statistics* -69.79% (396,287 rps) (avg: 2μs)
No metrics* (#) 0% (1,601,825 rps) (avg: 624ns)
With metrics* -69.18% (493,759 rps) (avg: 2μs)
-----------------------------------------------------------------------
*/
52 changes: 29 additions & 23 deletions benchmark/suites/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,11 +122,11 @@ let bench4 = benchmark.createSuite("Remote call with FakeTransporter");
let bench5 = benchmark.createSuite("Context tracking");
(function() {
let broker = createBroker( { trackContext: true });
bench5.ref("broker.call (normal)", done => {
bench5.ref("broker.call (without tracking)", done => {
return broker.call("math.add", { a: 4, b: 2 }, { trackContext: false }).then(done);
});

bench5.add("broker.call (with trackContext)", done => {
bench5.add("broker.call (with tracking)", done => {
return broker.call("math.add", { a: 4, b: 2 }, { trackContext: true }).then(done);
});

Expand All @@ -144,42 +144,48 @@ module.exports = Promise.delay(1000).then(() => benchmark.run([bench1, bench2, b
Platform info:
==============
Windows_NT 6.1.7601 x64
Node.JS: 8.9.4
V8: 6.1.534.50
Node.JS: 8.11.0
V8: 6.2.414.50
Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz × 8
Suite: Local call
√ broker.call (normal)* 1,654,091 rps
√ broker.call (with params)* 1,846,689 rps
√ broker.call (normal)* 1,595,635 rps
√ broker.call (with params)* 1,662,917 rps
broker.call (normal)* (#) 0% (1,654,091 rps) (avg: 604ns)
broker.call (with params)* +11.64% (1,846,689 rps) (avg: 541ns)
broker.call (normal)* (#) 0% (1,595,635 rps) (avg: 626ns)
broker.call (with params)* +4.22% (1,662,917 rps) (avg: 601ns)
-----------------------------------------------------------------------
Suite: Call with middlewares
√ No middlewares* 1,660,456 rps
√ 5 middlewares* 1,588,124 rps
√ No middlewares* 1,621,427 rps
√ 5 middlewares* 664,141 rps
No middlewares* (#) 0% (1,660,456 rps) (avg: 602ns)
5 middlewares* -4.36% (1,588,124 rps) (avg: 629ns)
No middlewares* (#) 0% (1,621,427 rps) (avg: 616ns)
5 middlewares* -59.04% (664,141 rps) (avg: 1μs)
-----------------------------------------------------------------------
Suite: Call with statistics & metrics
√ No statistics* 1,616,265 rps
√ With metrics* 549,124 rps
√ With statistics* 768,617 rps
√ With metrics & statistics* 408,013 rps
Suite: Call with metrics
√ No metrics* 1,546,373 rps
√ With metrics* 486,737 rps
No statistics* (#) 0% (1,616,265 rps) (avg: 618ns)
With metrics* -66.03% (549,124 rps) (avg: 1μs)
With statistics* -52.44% (768,617 rps) (avg: 1μs)
With metrics & statistics* -74.76% (408,013 rps) (avg: 2μs)
No metrics* (#) 0% (1,546,373 rps) (avg: 646ns)
With metrics* -68.52% (486,737 rps) (avg: 2μs)
-----------------------------------------------------------------------
Suite: Remote call with FakeTransporter
√ Remote call echo.reply* 45,987 rps
√ Remote call echo.reply* 42,409 rps
√ Remote call echo.reply with tracking* 45,739 rps
Remote call echo.reply* 0% (45,987 rps) (avg: 21μs)
Remote call echo.reply* (#) 0% (42,409 rps) (avg: 23μs)
Remote call echo.reply with tracking* +7.85% (45,739 rps) (avg: 21μs)
-----------------------------------------------------------------------
Suite: Context tracking
√ broker.call (without tracking)* 1,606,966 rps
√ broker.call (with tracking)* 1,588,692 rps
broker.call (without tracking)* (#) 0% (1,606,966 rps) (avg: 622ns)
broker.call (with tracking)* -1.14% (1,588,692 rps) (avg: 629ns)
-----------------------------------------------------------------------
*/
30 changes: 15 additions & 15 deletions benchmark/suites/events.js
Original file line number Diff line number Diff line change
Expand Up @@ -127,24 +127,24 @@ bench.run();
Platform info:
==============
Windows_NT 6.1.7601 x64
Node.JS: 8.9.4
V8: 6.1.534.50
Node.JS: 8.11.0
V8: 6.2.414.50
Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz × 8
Suite: Emit event
√ Emit event without subscribers 7,450,694 rps
√ Emit simple event to 1 subscribers 663,669 rps
√ Emit simple event to 20 subscribers 41,231 rps
√ Emit wildcard event to 20 subscribers 30,902 rps
√ Emit multi-wildcard event to 20 subscribers without params 30,608 rps
√ Emit multi-wildcard event to 20 subscribers with params 30,355 rps
Emit event without subscribers (#) 0% (7,450,694 rps) (avg: 134ns)
Emit simple event to 1 subscribers -91.09% (663,669 rps) (avg: 1μs)
Emit simple event to 20 subscribers -99.45% (41,231 rps) (avg: 24μs)
Emit wildcard event to 20 subscribers -99.59% (30,902 rps) (avg: 32μs)
Emit multi-wildcard event to 20 subscribers without params -99.59% (30,608 rps) (avg: 32μs)
Emit multi-wildcard event to 20 subscribers with params -99.59% (30,355 rps) (avg: 32μs)
√ Emit event without subscribers 7,093,574 rps
√ Emit simple event to 1 subscribers 6,318,996 rps
√ Emit simple event to 20 subscribers 6,428,321 rps
√ Emit wildcard event to 20 subscribers 6,684,002 rps
√ Emit multi-wildcard event to 20 subscribers without params 7,176,790 rps
√ Emit multi-wildcard event to 20 subscribers with params 6,577,082 rps
Emit event without subscribers (#) 0% (7,093,574 rps) (avg: 140ns)
Emit simple event to 1 subscribers -10.92% (6,318,996 rps) (avg: 158ns)
Emit simple event to 20 subscribers -9.38% (6,428,321 rps) (avg: 155ns)
Emit wildcard event to 20 subscribers -5.77% (6,684,002 rps) (avg: 149ns)
Emit multi-wildcard event to 20 subscribers without params +1.17% (7,176,790 rps) (avg: 139ns)
Emit multi-wildcard event to 20 subscribers with params -7.28% (6,577,082 rps) (avg: 152ns)
-----------------------------------------------------------------------
*/
38 changes: 27 additions & 11 deletions benchmark/suites/middlewares.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
"use strict";

const Promise = require("bluebird");
const _ = require("lodash");

const Benchmarkify = require("benchmarkify");
Expand All @@ -9,11 +10,22 @@ const ServiceBroker = require("../../src/service-broker");

const bench = benchmark.createSuite("Middleware test");

(function() {
const broker = new ServiceBroker({ logger: false, internalMiddlewares: false });
broker.loadService(__dirname + "/../user.service");
broker.start();

bench.add("Without internal & custom middlewares", done => {
return broker.call("users.find").then(done);
});
})();

(function() {
const broker = new ServiceBroker({ logger: false });
broker.loadService(__dirname + "/../user.service");
broker.start();

bench.ref("Without middlewares", done => {
bench.ref("Without custom middlewares", done => {
return broker.call("users.find").then(done);
});
})();
Expand All @@ -27,6 +39,7 @@ const bench = benchmark.createSuite("Middleware test");
] });

broker.loadService(__dirname + "/../user.service");
broker.start();

bench.add("With 1 middlewares", done => {
return broker.call("users.find").then(done);
Expand All @@ -41,13 +54,14 @@ const bench = benchmark.createSuite("Middleware test");
// Add 10 middlewares
const broker = new ServiceBroker({ logger: false, middlewares: Array(10).fill(mw) });
broker.loadService(__dirname + "/../user.service");
broker.start();

bench.add("With 10 middlewares", done => {
return broker.call("users.find").then(done);
});
})();

bench.run();
Promise.delay(1000).then(() => bench.run());

/*
Expand All @@ -58,18 +72,20 @@ bench.run();
Platform info:
==============
Windows_NT 6.1.7601 x64
Node.JS: 8.9.4
V8: 6.1.534.50
Node.JS: 8.11.0
V8: 6.2.414.50
Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz × 8
Suite: Middleware test
√ Without middlewares* 1,725,594 rps
√ With 1 middlewares* 1,395,079 rps
√ With 10 middlewares* 1,841,953 rps
Without middlewares* (#) 0% (1,725,594 rps) (avg: 579ns)
With 1 middlewares* -19.15% (1,395,079 rps) (avg: 716ns)
With 10 middlewares* +6.74% (1,841,953 rps) (avg: 542ns)
√ Without internal & custom middlewares* 2,786,666 rps
√ Without custom middlewares* 1,745,153 rps
√ With 1 middlewares* 1,270,108 rps
√ With 10 middlewares* 473,433 rps
Without internal & custom middlewares* +59.68% (2,786,666 rps) (avg: 358ns)
Without custom middlewares* (#) 0% (1,745,153 rps) (avg: 573ns)
With 1 middlewares* -27.22% (1,270,108 rps) (avg: 787ns)
With 10 middlewares* -72.87% (473,433 rps) (avg: 2μs)
-----------------------------------------------------------------------
Expand Down
Loading

0 comments on commit 0729ea7

Please sign in to comment.