-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathbenchmark.js
122 lines (107 loc) · 14.8 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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
'use strict';
let Benchmark = require('benchmark');
let humps = require('humps');
let xcase = require('./es5');
let camelCase = require('lodash').camelCase;
let reduce = require('lodash').reduce;
let objectBare = {"payments":[{"id":358,"created_at":"2016-09-10T08:23:00.601Z","currency":"EUR","auto_charged":false,"bill_to":{"city":"Gda","phone":"FF","address":"FF","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"ddk"},"value":500,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":351,"created_at":"2016-09-08T05:45:51.274Z","currency":"EUR","auto_charged":true,"bill_to":{"city":"Gda","phone":"FF","address":"FF","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"ddk"},"value":1000,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":344,"created_at":"2016-09-08T05:23:22.792Z","currency":"EUR","auto_charged":false,"bill_to":{"city":"Gda","phone":"FF","address":"FF","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"ddk"},"value":1200,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":297,"created_at":"2016-09-07T22:52:16.183Z","currency":"EUR","auto_charged":false,"bill_to":{"city":"Gda","phone":"FF","address":"FF","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"ddk"},"value":500,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":296,"created_at":"2016-09-07T22:51:50.627Z","currency":"EUR","auto_charged":false,"bill_to":{"city":"Gda","phone":"FF","address":"FF","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"ddk"},"value":500,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":201,"created_at":"2016-09-06T22:30:53.784Z","currency":"EUR","auto_charged":false,"bill_to":{"city":"Gda","phone":"FF","address":"FF","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"ddk"},"value":500,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":200,"created_at":"2016-09-06T22:30:28.323Z","currency":"EUR","auto_charged":false,"bill_to":{"city":"Gda","phone":"FF","address":"FF","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"ddk"},"value":500,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":196,"created_at":"2016-09-06T22:16:46.789Z","currency":"EUR","auto_charged":false,"bill_to":{"city":"Gda","phone":"FF","address":"FF","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"ddk"},"value":500,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":160,"created_at":"2016-09-06T22:05:19.009Z","currency":"EUR","auto_charged":false,"bill_to":{"city":"Gda","phone":"FF","address":"FF","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"ddk"},"value":500,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":79,"created_at":"2016-09-02T23:12:32.017Z","currency":"EUR","auto_charged":true,"bill_to":{"city":"Gda","phone":"FF","address":"FF","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"ddk"},"value":1000,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":76,"created_at":"2016-09-01T22:28:34.224Z","currency":"EUR","auto_charged":true,"bill_to":{"city":"Gda","phone":"FF","address":"FF","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"ddk"},"value":1000,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":40,"created_at":"2016-08-20T04:28:45.484Z","currency":"EUR","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Encino","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"dk"},"value":16000,"refunded":false,"user":{"id":3,"email":"[email protected]"},"subscriptions":[]},{"id":39,"created_at":"2016-08-20T04:26:41.275Z","currency":"EUR","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Encino","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"dk"},"value":8000,"refunded":false,"user":{"id":3,"email":"[email protected]"},"subscriptions":[]},{"id":37,"created_at":"2016-08-20T00:24:13.960Z","currency":"EUR","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Encino","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"dk"},"value":16000,"refunded":false,"user":{"id":3,"email":"[email protected]"},"subscriptions":[]},{"id":36,"created_at":"2016-08-19T18:11:44.340Z","currency":"EUR","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Encino","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"dk"},"value":4000,"refunded":false,"user":{"id":3,"email":"[email protected]"},"subscriptions":[]},{"id":35,"created_at":"2016-08-19T18:11:08.783Z","currency":"EUR","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Encino","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"dk"},"value":2000,"refunded":false,"user":{"id":3,"email":"[email protected]"},"subscriptions":[]},{"id":34,"created_at":"2016-08-18T14:02:46.874Z","currency":"EUR","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Encino","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"dk"},"value":1000,"refunded":false,"user":{"id":3,"email":"[email protected]"},"subscriptions":[]},{"id":33,"created_at":"2016-08-13T00:58:40.838Z","currency":"EUR","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Encino","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"dk"},"value":4000,"refunded":false,"user":{"id":3,"email":"[email protected]"},"subscriptions":[]},{"id":32,"created_at":"2016-08-13T00:28:41.613Z","currency":"EUR","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Encino","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"dk"},"value":2000,"refunded":false,"user":{"id":3,"email":"[email protected]"},"subscriptions":[]},{"id":28,"created_at":"2016-08-13T00:25:05.052Z","currency":"EUR","auto_charged":false,"bill_to":{"city":"Gdansk","state":null,"address":"Encino","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"dk"},"value":500,"refunded":false,"user":{"id":3,"email":"[email protected]"},"subscriptions":[]},{"id":22,"created_at":"2016-07-22T14:43:34.524Z","currency":"EUR","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Encino","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"dk"},"value":1000,"refunded":false,"user":{"id":3,"email":"[email protected]"},"subscriptions":[]},{"id":21,"created_at":"2016-07-22T14:43:20.898Z","currency":"EUR","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Encino","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"dk"},"value":1000,"refunded":false,"user":{"id":3,"email":"[email protected]"},"subscriptions":[]},{"id":20,"created_at":"2016-07-21T16:33:42.669Z","currency":"EUR","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Encino","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"dk"},"value":1000,"refunded":false,"user":{"id":3,"email":"[email protected]"},"subscriptions":[]},{"id":19,"created_at":"2016-07-20T23:30:55.313Z","currency":"EUR","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Encino","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"dk"},"value":2000,"refunded":false,"user":{"id":3,"email":"[email protected]"},"subscriptions":[]},{"id":18,"created_at":"2016-07-19T20:18:20.029Z","currency":"EUR","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Encino","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"dk"},"value":1000,"refunded":false,"user":{"id":3,"email":"[email protected]"},"subscriptions":[]},{"id":17,"created_at":"2016-07-19T00:32:09.686Z","currency":"USD","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Foobar","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"DK"},"value":2000,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":14,"created_at":"2016-07-19T00:24:10.509Z","currency":"USD","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Foobar","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"DK"},"value":2000,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":11,"created_at":"2016-07-19T00:19:10.501Z","currency":"USD","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Foobar","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"DK"},"value":1000,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":10,"created_at":"2016-07-14T22:40:04.323Z","currency":"USD","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Foobar","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"DK"},"value":2000,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":9,"created_at":"2016-07-14T22:39:05.630Z","currency":"USD","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Foobar","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"DK"},"value":2000,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":8,"created_at":"2016-07-14T22:37:18.419Z","currency":"USD","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Foobar","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"DK"},"value":2000,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":7,"created_at":"2016-07-14T15:04:53.613Z","currency":"USD","auto_charged":true,"bill_to":{"city":"Gdansk","state":null,"address":"Foobar","country":"PL","last_name":"K","first_name":"D","postal_code":"89273","company_name":"DK"},"value":1000,"refunded":false,"user":{"id":2,"email":"[email protected]"},"subscriptions":[]},{"id":6,"created_at":"2016-05-02T17:32:49.329Z","currency":"USD","auto_charged":false,"bill_to":{"city":"Gdansk","state":null,"country":"PL","last_name":"K","first_name":"D","postal_code":"89273"},"value":500,"refunded":false,"user":{"id":1,"email":"[email protected]"},"subscriptions":[]},{"id":4,"created_at":"2016-05-02T17:31:15.706Z","currency":"USD","auto_charged":false,"bill_to":{"city":"Gdansk","state":null,"country":"PL","last_name":"K","first_name":"D","postal_code":"89273"},"value":500,"refunded":false,"user":{"id":1,"email":"[email protected]"},"subscriptions":[]},{"id":3,"created_at":"2016-04-06T16:38:31.915Z","currency":"USD","auto_charged":false,"bill_to":{"city":"Gdansk","state":null,"country":"PL","last_name":"K","first_name":"D","postal_code":"89273"},"value":1000,"refunded":false,"user":{"id":1,"email":"[email protected]"},"subscriptions":[]},{"id":2,"created_at":"2016-02-03T19:53:44.196Z","currency":"usd","auto_charged":false,"bill_to":{"city":"Gdansk","state":null,"country":"PL","last_name":"K","first_name":"D","postal_code":"89273"},"value":500,"refunded":false,"user":{"id":1,"email":"[email protected]"},"subscriptions":[]},{"id":1,"created_at":"2016-02-03T19:45:58.499Z","currency":"usd","auto_charged":false,"bill_to":{},"value":500,"refunded":false,"user":{"id":1,"email":"[email protected]"},"subscriptions":[]}]};
let smallObject = {"id":1,"created_at":"2016-02-03T19:45:58.499Z","currency":"usd","auto_charged":false,"bill_to":{},"value_with_tax":500,"refunded":false};
let smallObjectCamelized = xcase.camelizeKeys(smallObject);
let object = {array: []};
for(let i = 0;i < 10;++i) {
object.array[i] = Object.assign({}, objectBare);
}
let suite = new Benchmark.Suite;
let camelizedObject = xcase.camelizeKeys(object);
let objectPool = [];
function initPool() {
while(objectPool.length < 10000) {
objectPool.push(Object.assign({}, object));
}
}
initPool(); // pool for testing in place camelizeKeys
function onCycle(event) {
if(objectPool.length == 0) {
throw new Error('Pool ran out of objects');
}
console.log(String(event.target));
initPool();
}
function onComplete() {
console.log('Fastest is ' + this.filter('fastest').map('name'));
}
function getStringForDecamelize() {
return 'fooBarFooBar';
}
function getStringForCamelize() {
return 'foo_bar_foo';
}
(new Benchmark.Suite)
.add('xcase#camelize', function() {
xcase.camelize(getStringForCamelize());
})
.add('humps#camelize', function() {
humps.camelize(getStringForCamelize());
})
.add('lodash#camelCase', function() {
camelCase(getStringForCamelize());
})
.on('cycle', onCycle).on('complete', onComplete).run();
(new Benchmark.Suite)
.add('xcase#decamelize', function() {
xcase.decamelize(getStringForDecamelize());
})
.add('humps#decamelize', function() {
humps.decamelize(getStringForDecamelize());
})
.add('lodash#snakeCase', function() {
camelCase(getStringForDecamelize());
})
.on('cycle', onCycle).on('complete', onComplete).run();
(new Benchmark.Suite)
.add('xcase#camelizeKeys', function() {
xcase.camelizeKeys(smallObject);
})
.add('humps#camelizeKeys', function() {
humps.camelizeKeys(smallObject);
})
.add('lodash#reduce + camelCase', function() {
reduce(smallObject, function (record, val, key) {
record[camelCase(key)] = val;
return record;
}, {});
})
.on('cycle', onCycle).on('complete', onComplete).run();
(new Benchmark.Suite)
.add('xcase#decamelizeKeys', function() {
xcase.decamelizeKeys(smallObjectCamelized);
})
.add('humps#decamelizeKeys', function() {
humps.decamelizeKeys(smallObjectCamelized);
})
.add('lodash#reduce + snakeCase', function() {
reduce(smallObject, function (record, val, key) {
record[snakeCase(key)] = val;
return record;
}, {});
})
.on('cycle', onCycle).on('complete', onComplete).run();
(new Benchmark.Suite)
.add('xcase#camelizeKeys (large object)', function() {
xcase.camelizeKeys(objectPool.pop());
})
.add('xcase#camelizeKeys {inPlace: true} (large object)', function() {
xcase.camelizeKeys(objectPool.pop(), {inPlace: true});
})
.add('humps#camelizeKeys (large object)', function() {
humps.camelizeKeys(objectPool.pop());
})
.on('cycle', onCycle).on('complete', onComplete).run();
(new Benchmark.Suite)
.add('xcase#decamelizeKeys (large object)', function() {
xcase.decamelizeKeys(camelizedObject);
})
.add('humps#decamelizeKeys (large object)', function() {
humps.decamelizeKeys(camelizedObject);
})
.on('cycle', onCycle).on('complete', onComplete).run();