Skip to content

Commit eec0ed5

Browse files
ayusharmapago
authored andcommitted
fix: compiler benchmark (trivago#15)
1 parent f95bf10 commit eec0ed5

File tree

4 files changed

+363
-7
lines changed

4 files changed

+363
-7
lines changed

bench/README.md

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
### Benchmarks
2+
* * *
3+
4+
To run the benchmark, install dependencies and run the file with `node`.
5+
6+
#### Installation
7+
```sh
8+
yarn install
9+
```
10+
11+
#### Example
12+
```sh
13+
node compiler.js
14+
```

bench/compiler.js

+11-7
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,36 @@
11
require('babel-register');
22
const fs = require('fs');
33
const path = require('path');
4-
const { compile, toString } = require('../packages/compiler');
5-
const { extension: coreExtension } = require('../packages/extension-core');
4+
const { compile, toString } = require('melody-compiler');
5+
const { extension: coreExtension } = require('melody-extension-core');
6+
const idomPlugin = require('melody-plugin-idom');
7+
8+
const plugins = [coreExtension, idomPlugin];
69

710
const name = 'itemElement';
811
fs.readFile(
912
path.join(
1013
__dirname,
1114
'..',
1215
'packages',
13-
'compiler',
16+
'melody-compiler',
1417
'__tests__',
15-
'fixtures',
16-
name + '.twig',
18+
'__fixtures__',
19+
'success',
20+
name + '.template'
1721
),
1822
(err, content) => {
1923
if (err) {
2024
throw err;
2125
}
2226
const code = content.toString();
2327
const startTime = +new Date();
24-
var jsAst = compile(name + '.twig', code, coreExtension, {
28+
const jsAst = compile(name + '.twig', code, ...plugins, {
2529
options: {
2630
generateKey: false,
2731
},
2832
});
2933
toString(jsAst, code);
3034
console.log('Elapsed time: %dms', +new Date() - startTime);
31-
},
35+
}
3236
);

bench/package.json

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"name": "bench",
3+
"version": "1.0.2",
4+
"description": "melody benchmark",
5+
"main": "compiler.js",
6+
"scripts": {
7+
"benchmark": "node compiler.js"
8+
},
9+
"author": "",
10+
"license": "Apache-2.0",
11+
"dependencies": {
12+
"melody-component": "^1.0.2",
13+
"melody-hoc": "^1.0.2",
14+
"melody-idom": "^1.0.2",
15+
"melody-loader": "^1.0.2",
16+
"melody-parser": "^1.0.2",
17+
"melody-plugin-idom": "^1.0.2",
18+
"melody-traverse": "^1.0.2",
19+
"melody-types": "^1.0.2"
20+
}
21+
}

bench/yarn.lock

+317
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,317 @@
1+
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2+
# yarn lockfile v1
3+
4+
5+
ansi-regex@^2.0.0:
6+
version "2.1.1"
7+
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
8+
9+
ansi-styles@^2.2.1:
10+
version "2.2.1"
11+
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
12+
13+
babel-code-frame@^6.26.0:
14+
version "6.26.0"
15+
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
16+
dependencies:
17+
chalk "^1.1.3"
18+
esutils "^2.0.2"
19+
js-tokens "^3.0.2"
20+
21+
22+
version "6.10.2"
23+
resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.10.2.tgz#af831816643dbeb87bc0765be02f1f57bc14053f"
24+
dependencies:
25+
babel-messages "^6.8.0"
26+
babel-runtime "^6.9.0"
27+
babel-types "^6.10.2"
28+
detect-indent "^3.0.1"
29+
lodash "^4.2.0"
30+
source-map "^0.5.0"
31+
32+
babel-messages@^6.23.0, babel-messages@^6.8.0:
33+
version "6.23.0"
34+
resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
35+
dependencies:
36+
babel-runtime "^6.22.0"
37+
38+
babel-runtime@^6.22.0, babel-runtime@^6.26.0, babel-runtime@^6.9.0:
39+
version "6.26.0"
40+
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
41+
dependencies:
42+
core-js "^2.4.0"
43+
regenerator-runtime "^0.11.0"
44+
45+
babel-template@^6.8.0:
46+
version "6.26.0"
47+
resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
48+
dependencies:
49+
babel-runtime "^6.26.0"
50+
babel-traverse "^6.26.0"
51+
babel-types "^6.26.0"
52+
babylon "^6.18.0"
53+
lodash "^4.17.4"
54+
55+
babel-traverse@^6.26.0:
56+
version "6.26.0"
57+
resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
58+
dependencies:
59+
babel-code-frame "^6.26.0"
60+
babel-messages "^6.23.0"
61+
babel-runtime "^6.26.0"
62+
babel-types "^6.26.0"
63+
babylon "^6.18.0"
64+
debug "^2.6.8"
65+
globals "^9.18.0"
66+
invariant "^2.2.2"
67+
lodash "^4.17.4"
68+
69+
babel-types@^6.10.2, babel-types@^6.26.0, babel-types@^6.8.1:
70+
version "6.26.0"
71+
resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
72+
dependencies:
73+
babel-runtime "^6.26.0"
74+
esutils "^2.0.2"
75+
lodash "^4.17.4"
76+
to-fast-properties "^1.0.3"
77+
78+
babylon@^6.18.0:
79+
version "6.18.0"
80+
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
81+
82+
big.js@^3.1.3:
83+
version "3.2.0"
84+
resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
85+
86+
chalk@^1.1.3:
87+
version "1.1.3"
88+
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
89+
dependencies:
90+
ansi-styles "^2.2.1"
91+
escape-string-regexp "^1.0.2"
92+
has-ansi "^2.0.0"
93+
strip-ansi "^3.0.0"
94+
supports-color "^2.0.0"
95+
96+
core-js@^2.4.0:
97+
version "2.5.3"
98+
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e"
99+
100+
debug@^2.6.8:
101+
version "2.6.9"
102+
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
103+
dependencies:
104+
ms "2.0.0"
105+
106+
detect-indent@^3.0.1:
107+
version "3.0.1"
108+
resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-3.0.1.tgz#9dc5e5ddbceef8325764b9451b02bc6d54084f75"
109+
dependencies:
110+
get-stdin "^4.0.1"
111+
minimist "^1.1.0"
112+
repeating "^1.1.0"
113+
114+
emojis-list@^2.0.0:
115+
version "2.1.0"
116+
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
117+
118+
escape-string-regexp@^1.0.2:
119+
version "1.0.5"
120+
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
121+
122+
esutils@^2.0.2:
123+
version "2.0.2"
124+
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
125+
126+
get-stdin@^4.0.1:
127+
version "4.0.1"
128+
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
129+
130+
globals@^9.18.0:
131+
version "9.18.0"
132+
resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
133+
134+
has-ansi@^2.0.0:
135+
version "2.0.0"
136+
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
137+
dependencies:
138+
ansi-regex "^2.0.0"
139+
140+
he@^1.1.0:
141+
version "1.1.1"
142+
resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
143+
144+
invariant@^2.2.2:
145+
version "2.2.2"
146+
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360"
147+
dependencies:
148+
loose-envify "^1.0.0"
149+
150+
is-finite@^1.0.0:
151+
version "1.0.2"
152+
resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
153+
dependencies:
154+
number-is-nan "^1.0.0"
155+
156+
js-tokens@^3.0.0, js-tokens@^3.0.2:
157+
version "3.0.2"
158+
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
159+
160+
json-stringify-safe@^5.0.1:
161+
version "5.0.1"
162+
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
163+
164+
json5@^0.5.0:
165+
version "0.5.1"
166+
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
167+
168+
loader-utils@^1.1.0:
169+
version "1.1.0"
170+
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd"
171+
dependencies:
172+
big.js "^3.1.3"
173+
emojis-list "^2.0.0"
174+
json5 "^0.5.0"
175+
176+
lodash@^4.12.0, lodash@^4.15.0, lodash@^4.17.4, lodash@^4.2.0:
177+
version "4.17.4"
178+
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
179+
180+
loose-envify@^1.0.0:
181+
version "1.3.1"
182+
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848"
183+
dependencies:
184+
js-tokens "^3.0.0"
185+
186+
187+
version "1.0.2"
188+
resolved "https://registry.yarnpkg.com/melody-code-frame/-/melody-code-frame-1.0.2.tgz#a4ac7e7e3821803855f7808d8bf17c3414fbb002"
189+
dependencies:
190+
lodash "^4.15.0"
191+
192+
193+
version "1.0.2"
194+
resolved "https://registry.yarnpkg.com/melody-compiler/-/melody-compiler-1.0.2.tgz#58e0d8e5fbcc1d61d742471fd67e9e9d2c9b36f4"
195+
dependencies:
196+
babel-generator "6.10.x"
197+
babel-template "^6.8.0"
198+
babel-types "^6.8.1"
199+
lodash "^4.12.0"
200+
melody-code-frame "1.0.2"
201+
random-seed "^0.3.0"
202+
203+
[email protected], melody-component@^1.0.2:
204+
version "1.0.2"
205+
resolved "https://registry.yarnpkg.com/melody-component/-/melody-component-1.0.2.tgz#d3e5998013f038cfcf67f19287e4335f83cf8de2"
206+
207+
208+
version "1.0.2"
209+
resolved "https://registry.yarnpkg.com/melody-extension-core/-/melody-extension-core-1.0.2.tgz#cc2b44eb84648518b190137d6c355152a005e20f"
210+
dependencies:
211+
babel-template "^6.8.0"
212+
babel-types "^6.8.1"
213+
lodash "^4.12.0"
214+
shortid "^2.2.6"
215+
216+
melody-hoc@^1.0.2:
217+
version "1.0.2"
218+
resolved "https://registry.yarnpkg.com/melody-hoc/-/melody-hoc-1.0.2.tgz#3d8e9bd424c0aef514a0fda3bd0aa48aa952e368"
219+
dependencies:
220+
lodash "^4.15.0"
221+
melody-component "1.0.2"
222+
223+
melody-idom@^1.0.2:
224+
version "1.0.2"
225+
resolved "https://registry.yarnpkg.com/melody-idom/-/melody-idom-1.0.2.tgz#274f386940d6f8eac9c639f46a876298b135ca88"
226+
dependencies:
227+
lodash "^4.12.0"
228+
229+
melody-loader@^1.0.2:
230+
version "1.0.2"
231+
resolved "https://registry.yarnpkg.com/melody-loader/-/melody-loader-1.0.2.tgz#d553d48da5044cb32b89b3ac76cee5ebfbfa871f"
232+
dependencies:
233+
loader-utils "^1.1.0"
234+
lodash "^4.12.0"
235+
melody-compiler "1.0.2"
236+
melody-extension-core "1.0.2"
237+
melody-runtime "1.0.2"
238+
239+
melody-parser@^1.0.2:
240+
version "1.0.2"
241+
resolved "https://registry.yarnpkg.com/melody-parser/-/melody-parser-1.0.2.tgz#b0f26fe4f12c783ce650759c1feeccfcc3b68c7f"
242+
dependencies:
243+
he "^1.1.0"
244+
lodash "^4.12.0"
245+
melody-code-frame "1.0.2"
246+
247+
melody-plugin-idom@^1.0.2:
248+
version "1.0.2"
249+
resolved "https://registry.yarnpkg.com/melody-plugin-idom/-/melody-plugin-idom-1.0.2.tgz#59eb3f21b9c8edc434ae8102cb35c4c8eb2407c7"
250+
dependencies:
251+
babel-types "^6.8.1"
252+
253+
254+
version "1.0.2"
255+
resolved "https://registry.yarnpkg.com/melody-runtime/-/melody-runtime-1.0.2.tgz#90c4837ffb6a456ac28edddf8fcdf4153a8a7d35"
256+
dependencies:
257+
lodash "^4.12.0"
258+
259+
melody-traverse@^1.0.2:
260+
version "1.0.2"
261+
resolved "https://registry.yarnpkg.com/melody-traverse/-/melody-traverse-1.0.2.tgz#59f14db96d2cc2241f12246822cad6753a04814d"
262+
263+
melody-types@^1.0.2:
264+
version "1.0.2"
265+
resolved "https://registry.yarnpkg.com/melody-types/-/melody-types-1.0.2.tgz#7023f23d9190b412f0c4195b88c3aa99e9ed48bd"
266+
dependencies:
267+
babel-types "^6.8.1"
268+
269+
minimist@^1.1.0:
270+
version "1.2.0"
271+
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
272+
273+
274+
version "2.0.0"
275+
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
276+
277+
number-is-nan@^1.0.0:
278+
version "1.0.1"
279+
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
280+
281+
random-seed@^0.3.0:
282+
version "0.3.0"
283+
resolved "https://registry.yarnpkg.com/random-seed/-/random-seed-0.3.0.tgz#d945f2e1f38f49e8d58913431b8bf6bb937556cd"
284+
dependencies:
285+
json-stringify-safe "^5.0.1"
286+
287+
regenerator-runtime@^0.11.0:
288+
version "0.11.1"
289+
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
290+
291+
repeating@^1.1.0:
292+
version "1.1.3"
293+
resolved "https://registry.yarnpkg.com/repeating/-/repeating-1.1.3.tgz#3d4114218877537494f97f77f9785fab810fa4ac"
294+
dependencies:
295+
is-finite "^1.0.0"
296+
297+
shortid@^2.2.6:
298+
version "2.2.8"
299+
resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.8.tgz#033b117d6a2e975804f6f0969dbe7d3d0b355131"
300+
301+
source-map@^0.5.0:
302+
version "0.5.7"
303+
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
304+
305+
strip-ansi@^3.0.0:
306+
version "3.0.1"
307+
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
308+
dependencies:
309+
ansi-regex "^2.0.0"
310+
311+
supports-color@^2.0.0:
312+
version "2.0.0"
313+
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
314+
315+
to-fast-properties@^1.0.3:
316+
version "1.0.3"
317+
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"

0 commit comments

Comments
 (0)