-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathindex.js
More file actions
52 lines (44 loc) · 1.19 KB
/
index.js
File metadata and controls
52 lines (44 loc) · 1.19 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
41
42
43
44
45
46
47
48
49
50
51
52
var fs = require('fs');
var path = require('path');
function load(dir) {
var codecs = [];
var files = fs.readdirSync(dir);
for (var i in files) {
var basename = path.basename(files[i], '.js');
var modname = dir + '/' + basename;
codecs.push({
name: basename,
impl: require(modname)
});
}
return codecs;
}
function main() {
var codecs = load('./codecs');
var n = 10000;
var input = require('./input.json');
var rawSize = JSON.stringify(input).length;
var i;
var j;
for (i = 0; i < codecs.length; ++i) {
var codec = codecs[i];
var label = codec.name + ' encode';
var encodedData = codec.impl.encode(input);
var encodedSize = encodedData.length;
var percent = Math.round((rawSize - encodedSize) / rawSize * 100);
console.log(label + ' compress percent: ' + percent + '%');
console.time(label);
for (j = 0; j < n; ++j) {
codec.impl.encode(input);
}
console.timeEnd(label);
label = codec.name + ' decode';
console.time(label, '\t\t\t');
for (j = 0; j < n; ++j) {
codec.impl.decode(encodedData);
}
console.timeEnd(label);
console.log('-----------------------');
}
}
main(process.argv);