This repository has been archived by the owner on Feb 5, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathrun-bench.js
120 lines (118 loc) · 2.45 KB
/
run-bench.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
'use strict'
const Benchmark = require('benchmark')
const mobx = require('mobx')
const proxevable = require('./index')
const suite = new Benchmark.Suite()
const suite2 = new Benchmark.Suite()
const fs = require('fs')
let benchLog = ''
const log = (text) => {
console.log(text)
benchLog += text + '\n\n'
}
function arraySuite () {
suite2.add('mobx array autorun', () => {
const a = mobx.observable([])
const disposer = mobx.autorun(() => {
const ident = (v) => v
if (a.length > 0) {
ident(a[0])
}
if (a.length > 1) {
ident(a[1])
}
if (a.length > 2) {
ident(a[2])
}
})
a.push(1)
a.push(2)
a.push(3)
a.push(4)
a.push(5)
a.push(6)
a.pop()
a.pop()
a.pop()
a.length = 0
disposer()
})
.add('proxevable array autorun', () => {
const a = proxevable.observable([])
const disposer = proxevable.autorun(() => {
const ident = (v) => v
if (a.length) {
if (a.length > 0) {
ident(a[0])
}
if (a.length > 1) {
ident(a[1])
}
if (a.length > 2) {
ident(a[2])
}
}
})
a.push(1)
a.push(2)
a.push(3)
a.push(4)
a.push(5)
a.push(6)
a.pop()
a.pop()
a.pop()
a.length = 0
disposer()
})
// add listeners
.on('cycle', function (event) {
log(String(event.target))
})
.on('complete', function () {
log('Fastest is ' + this.filter('fastest').map('name'))
fs.writeFile('benchmark-results.md', benchLog, function (err) {
if (err) return console.error(err)
})
})
// run async
.run({ 'async': true })
}
// add tests
suite.add('mobX create observable, autorun and dispose', function () {
let c = 0 // eslint-disable-line
const a = mobx.observable({g: 0})
const disposer = mobx.autorun(() => {
const ident = (v) => v
ident(a.g)
c += 1
})
a.g = 1
a.g = 1
a.g = 2
a.g = 3
disposer()
a.g = 4
})
.add('proxevable create observable, autorun and dispose', function () {
let c = 0 // eslint-disable-line
const a = proxevable.observable({})
const disposer = proxevable.autorun(() => {
const ident = (v) => v
ident(a.g)
c += 1
})
a.g = 1
a.g = 1
a.g = 2
a.g = 3
disposer()
a.g = 4
})
// add listeners
.on('cycle', function (event) {
log(String(event.target))
})
.on('complete', arraySuite)
// run async
.run({ 'async': true })