2
2
3
3
[ ![ Build Status] ( https://travis-ci.org/v8/web-tooling-benchmark.svg?branch=master )] ( https://travis-ci.org/v8/web-tooling-benchmark ) [ ![ styled with prettier] ( https://img.shields.io/badge/styled_with-prettier-ff69b4.svg )] ( https://github.com/prettier/prettier )
4
4
5
- This is work-in-progress benchmark suite that tries to measure the
6
- JavaScript related workloads required by Web Developers nowadays.
7
- It's the explicit goal not to measure I/O or other non-JavaScript
8
- related tasks.
5
+ This is a benchmark suite designed to measure the JavaScript related
6
+ workloads commonly used by Web Developers nowadays, for example the
7
+ core workloads in popular tools like [ Babel] ( https://github.com/babel/babel )
8
+ or [ TypeScript] ( https://github.com/Microsoft/TypeScript ) . It's the
9
+ explicit goal to measure ** only** the JavaScript performance aspect,
10
+ which is affected by the JavaScript engine, and not measure I/O or
11
+ other unrelated aspects.
9
12
10
13
See the [ in-depth
11
14
analysis] ( https://github.com/v8/web-tooling-benchmark/blob/master/docs/in-depth.md )
12
15
for a detailed description of the tests included in this benchmark suite.
13
16
14
17
## Building
15
18
19
+ > This was tested with Node 6, Node 7 and Node 8.
20
+
16
21
Building the benchmark suite is just a matter of running
17
22
18
23
```
19
24
$ npm install
20
25
```
21
26
22
- assuming that you have a working [ Node] ( https://nodejs.org ) installation. This
23
- was only tested with Node thus far, and it might not work properly with earlier
24
- versions of Node. Once the command is done, it produces a bundled version that
25
- is suitable to run in JS shells (i.e. ` d8 ` , ` jsc ` or ` jsshell ` ) in ` dist/run.js `
26
- and another bundle in ` dist/bundle.js ` that is used by the browser version in
27
- ` dist/index.html ` .
27
+ assuming that you have a working [ Node] ( https://nodejs.org ) installation. Once
28
+ the command is done, it produces a bundled version that is suitable to run in
29
+ JS shells (i.e. ` d8 ` , ` jsc ` or ` jsshell ` ) in ` dist/run.js ` and another bundle
30
+ in ` dist/bundle.js ` that is used by the browser version in ` dist/index.html ` .
28
31
29
32
## Running
30
33
@@ -33,57 +36,28 @@ i.e. like this:
33
36
34
37
```
35
38
$ node src/cli
36
- Running Web Tooling Benchmark 0.0.2 ...
39
+ Running Web Tooling Benchmark 0.2.0 ...
37
40
--------------------------------------
38
- babel: 7.42 runs/sec ±6.67%
39
- babylon: 13.10 runs/sec ±6.51%
40
- buble: 6.60 runs/sec ±9.79%
41
- chai: 13.20 runs/sec ±2.01%
42
- lebab: 10.14 runs/sec ±5.94%
43
- prettier: 8.27 runs/sec ±9.31%
44
- source-map: 16.50 runs/sec ±6.46%
45
- typescript: 10.29 runs/sec ±9.79%
46
- uglify-js: 7.21 runs/sec ±11.06%
47
- uglify-es: 17.72 runs/sec ±4.67%
41
+ acorn: 10.16 runs/sec ±10.38%
42
+ babel: 8.78 runs/sec ±2.89%
43
+ babylon: 9.31 runs/sec ±8.50%
44
+ buble: 7.91 runs/sec ±9.95%
45
+ chai: 15.95 runs/sec ±2.50%
46
+ coffeescript: 7.06 runs/sec ±11.46%
47
+ espree: 6.75 runs/sec ±14.73%
48
+ esprima: 6.49 runs/sec ±13.16%
49
+ jshint: 9.85 runs/sec ±10.13%
50
+ lebab: 12.20 runs/sec ±7.63%
51
+ prepack: 8.88 runs/sec ±9.47%
52
+ prettier: 11.01 runs/sec ±8.09%
53
+ source-map: 19.43 runs/sec ±1.31%
54
+ typescript: 12.71 runs/sec ±8.55%
55
+ uglify-js: 9.49 runs/sec ±4.89%
56
+ uglify-es: 22.84 runs/sec ±4.86%
48
57
--------------------------------------
49
- Geometric mean: 11.41 runs/sec
58
+ Geometric mean: 10.45 runs/sec
50
59
```
51
60
52
61
Or you open a web browser and point it to ` dist/index.html ` , or you can use one
53
- of the engine JS shells (` d8 ` , ` jsc ` or ` jsshell ` ) to run the special bundle
54
- in ` dist/run.js ` .
55
-
56
- ## Philosophy
57
-
58
- I love the web! I love working on [ Chromium] ( http://www.chromium.org ) - more
59
- specifically on [ V8] ( http://v8project.org ) - to make the web even better! But
60
- building the best browser is only a small piece of the puzzle. I see browsers
61
- as similar to TV screens: They provide you with the * frame* . Having an awesome
62
- TV screen is nice, but doesn't buy you anything if there's no content and no
63
- one providing the infrastructure to deliver the content.
64
- With the web it's very similar, and so for the continued success of the web
65
- it's important to not only focus on the browser, but also support the
66
- content producers in the best way we can to ensure that we continue to have
67
- great websites with interesting content. V8 is in a kind of unique position
68
- here at this point in time, since it doesn't only power all Chromiun based
69
- browsers, but also powers [ Node.js] ( https://www.nodejs.org ) , which in turn
70
- provides the runs a lot of the enterprise services today, but even more
71
- importantly powers almost all the tooling used to create the web experiences.
72
-
73
- And this tooling (plus the support story around it) is one of the critical
74
- factors for companies when choosing a platform. The web platform today has
75
- an amazing set of tools, a very active community around most of them, which
76
- makes the web attractive as the main platform for so many companies. Besides
77
- several other aspects, it's important that these tools run reasonably fast.
78
- For example for developers that use [ test-driven development
79
- (TDD)] ( https://en.wikipedia.org/wiki/Test-driven_development ) it's crucial
80
- that the tests execute quickly. Or when using
81
- [ TypeScript] ( https://www.typescriptlang.org ) for development, it's important
82
- that the type checking and compilation to JavaScript doesn't take too long,
83
- especially when combined with a test-driven work-flow.
84
-
85
- Driving progress on the engine related aspects of the web tooling is the
86
- main motivation behind this benchmark suite. It tries to isolate the
87
- JavaScript heavy workloads from the most common tools used by the web
88
- platform. Specifically I/O and other non-JavaScript related aspects are
89
- excluded from the measurement.
62
+ of the engine JS shells (` d8 ` , ` jsc ` , ` ch ` or ` jsshell ` ) to run the special bundle
63
+ in ` dist/run.js ` .
0 commit comments