-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathbenchmark.js
More file actions
41 lines (37 loc) · 1.07 KB
/
benchmark.js
File metadata and controls
41 lines (37 loc) · 1.07 KB
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
var util = require('util'),
fs = require('fs'),
assert = require('assert'),
iptrie = require('iptrie');
var lookup = new iptrie.IPTrie();
fs.readFile(process.argv[2], 'utf-8', function(err, data) {
var count = 0;
var lines = data.split(/\n/);
var start = +(new Date());
for (var i=0; i<lines.length; i++) {
var m = /^([^\/]+)\/(\d+)\s+(.*)/.exec(lines[i]);
if(m) {
try {
lookup.add(m[1],parseInt(m[2]),m[3]);
count++;
}
catch(e) {
util.puts(e,m);
}
}
}
var elapsed = (+(new Date()) - start)/1000.0;
util.puts(count + " entries in " + elapsed + " seconds ");
util.puts(count/elapsed + " add/sec");
var timelookup = function(ip, cnt) {
if(!cnt) cnt = 100000;
var start = +(new Date());
for(var i=0; i<cnt; i++) lookup.find(ip);
var elapsed = (+(new Date()) - start)/1000.0;
util.puts(ip + " performance: " + cnt/elapsed + " lookups/sec");
};
timelookup('66.225.209.7');
timelookup('199.15.227.10');
timelookup('1.2.3.4');
timelookup('224.0.2.3');
timelookup('10.0.2.3');
});