-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbenchmark.js
executable file
·84 lines (73 loc) · 3.71 KB
/
benchmark.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/usr/bin/env node
const Benchmark = require('benchmark');
const mw = require('./index.js');
const mqttMatch = require('mqtt-match');
const mqttPattern = require("mqtt-pattern").exec;
const wins = {
'mqtt-wildcard': 0,
'mqtt-match': 0,
'mqtt-pattern': 0
};
function bench(desc, pattern, topic) {
const suite = new Benchmark.Suite;
suite.add('mqtt-wildcard - ' + desc, function () {
mw(topic, pattern);
}).add('mqtt-pattern - ' + desc, function () {
mqttPattern(pattern, topic);
}).add('mqtt-match - ' + desc, function () {
mqttMatch(pattern, topic);
}).on('cycle', function (event) {
console.log(String(event.target));
}).on('complete', function () {
const id = this.filter('fastest').map('name')[0].split(' ')[0];
console.log(' => Fastest is ' + id + '\n');
wins[id] += 1;
}).run({'async': false});
}
bench('match equal depth 4', 'test/test/test/test', 'test/test/test/test');
bench('match equal depth 8', 'test/test/test/test/test/test/test/test', 'test/test/test/test/test/test/test/test');
bench(
'match equal depth 16',
'test/test/test/test/test/test/test/test/test/test/test/test/test/test/test/test',
'test/test/test/test/test/test/test/test/test/test/test/test/test/test/test/test'
);
bench('match + 4 1', 'test/test/test/+', 'test/test/test/test');
bench('match + 4 2', 'test/test/+/test', 'test/test/test/test');
bench('match + 4 3', 'test/test/+/+', 'test/test/test/test');
bench('match + 4 4', 'test/+/test/test', 'test/test/test/test');
bench('match + 4 5', 'test/+/test/+', 'test/test/test/test');
bench('match + 4 6', 'test/+/+/test', 'test/test/test/test');
bench('match + 4 7', 'test/+/+/+', 'test/test/test/test');
bench('match + 4 8', '+/test/test/test', 'test/test/test/test');
bench('match + 4 9', '+/test/test/+', 'test/test/test/test');
bench('match + 4 10', '+/test/+/test', 'test/test/test/test');
bench('match + 4 11', '+/test/+/+', 'test/test/test/test');
bench('match + 4 12', '+/+/test/test', 'test/test/test/test');
bench('match + 4 13', '+/+/test/+', 'test/test/test/test');
bench('match + 4 14', '+/+/+/test', 'test/test/test/test');
bench('match + 4 15', '+/+/+/+', 'test/test/test/test');
bench('match # 4 1', '#', 'test/test/test/test');
bench('match # 4 2', 'test/#', 'test/test/test/test');
bench('match # 4 3', 'test/test/#', 'test/test/test/test');
bench('match # 4 4', 'test/test/test/#', 'test/test/test/test');
bench('match +# 4 2', 'test/test/+/#', 'test/test/test/test');
bench('match +# 4 4', 'test/+/test/#', 'test/test/test/test');
bench('match +# 4 6', 'test/+/+/#', 'test/test/test/test');
bench('match +# 4 8', '+/test/test/#', 'test/test/test/test');
bench('match +# 4 10', '+/test/+/#', 'test/test/test/test');
bench('match +# 4 12', '+/+/test/#', 'test/test/test/test');
bench('match +# 4 14', '+/+/+/#', 'test/test/test/test');
bench('mismatch + 4 1', 'test/test/muh/+', 'test/test/test/test');
bench('mismatch + 4 4', 'test/+/test/muh', 'test/test/test/test');
bench('mismatch + 4 5', 'test/+/muh/+', 'test/test/test/test');
bench('mismatch + 4 6', 'test/+/+/muh', 'test/test/test/test');
bench('mismatch + 4 2', 'test/muh/+/test', 'test/test/test/test');
bench('mismatch + 4 3', 'test/muh/+/+', 'test/test/test/test');
bench('mismatch + 4 7', 'muh/+/+/+', 'test/test/test/test');
bench('mismatch +# 4 4', 'test/+/muh/#', 'test/test/test/test');
bench('mismatch +# 4 8', '+/test/muh/#', 'test/test/test/test');
bench('mismatch +# 4 12', '+/+/muh/#', 'test/test/test/test');
bench('mismatch +# 4 2', 'test/muh/+/#', 'test/test/test/test');
bench('mismatch +# 4 10', '+/muh/+/#', 'test/test/test/test');
bench('mismatch +# 4 6', 'muh/+/+/#', 'test/test/test/test');
console.dir(wins);