From ed73c2c053435703cfbee8709f0dfb110cd31487 Mon Sep 17 00:00:00 2001 From: Natalie Weizenbaum Date: Fri, 12 Jul 2019 13:23:24 -0700 Subject: [PATCH] Update benchmarks for JS performance improvements As expected, this substantially improves the JS performance in logic-heavy benchmarks. I believe the other changes are just noise. --- perf.md | 125 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 63 insertions(+), 62 deletions(-) diff --git a/perf.md b/perf.md index 4986a35d3..96f7f7034 100644 --- a/perf.md +++ b/perf.md @@ -4,7 +4,7 @@ the benefit Dart Sass could provide relative to other implementations. This was tested against: * libsass 0f3d6ad1 and sassc 4674821 compiled with g++ (Debian 7.3.0-18) 7.3.0. -* Dart Sass 088fc28 on Dart 2.4.0 and Node v12.0.0. +* Dart Sass 50a45a7 on Dart 2.4.0 and Node v12.0.0. * Ruby Sass 8d1edc76 on ruby 2.5.3p105 (2018-10-18 revision 65156) [x86_64-linux]. on Debian x64 with Intel Xeon E5-1650 v3 @ 3.50GHz. The Dart Sass @@ -20,148 +20,149 @@ I ran five instances of each configuration and recorded the fastest time. Running on a file containing 4 instances of `.foo {a: b}`: -* sassc: 0.004s -* Dart Sass from a script snapshot: 0.219s -* Dart Sass native executable: 0.020s -* Dart Sass on Node.js: 0.200s -* Ruby Sass with a hot cache: 0.155s +* sassc: 0.005s +* Dart Sass from a script snapshot: 0.216s +* Dart Sass native executable: 0.018s +* Dart Sass on Node.js: 0.209s +* Ruby Sass with a hot cache: 0.148s Based on these numbers, Dart Sass from a native executable is approximately: -* 5.0x slower than libsass -* 10.0x faster than Dart Sass on Node -* 7.8x faster than Ruby Sass +* 3.6x slower than libsass +* 11.6x faster than Dart Sass on Node +* 8.2x faster than Ruby Sass ## Large Plain CSS Running on a file containing 2^17 instances of `.foo {a: b}`: -* sassc: 1.714s -* Dart Sass from a script snapshot: 1.606s -* Dart Sass native executable: 1.547s -* Dart Sass on Node.js: 2.672s -* Ruby Sass with a hot cache: 11.145s +* sassc: 1.705s +* Dart Sass from a script snapshot: 1.550s +* Dart Sass native executable: 1.518s +* Dart Sass on Node.js: 2.765s +* Ruby Sass with a hot cache: 10.965s Based on these numbers, Dart Sass from a native executable is approximately: * 1.1x faster than libsass -* 1.7x faster than Dart Sass on Node +* 1.8x faster than Dart Sass on Node * 7.2x faster than Ruby Sass ## Preceding Sparse `@extend` Running on a file containing `.x {@extend .y}`, 2^17 instances of `.foo {a: b}`, and then `.y {a: b}`: -* sassc: 1.750s -* Dart Sass from a script snapshot: 1.602s -* Dart Sass native executable: 1.585s -* Dart Sass on Node.js: 2.782s -* Ruby Sass with a hot cache: 17.012s +* sassc: 1.712s +* Dart Sass from a script snapshot: 1.613s +* Dart Sass native executable: 1.582s +* Dart Sass on Node.js: 2.739s +* Ruby Sass with a hot cache: 16.472s Based on these numbers, Dart Sass from a native executable is approximately: * 1.1x faster than libsass -* 1.8x faster than Dart Sass on Node -* 10.7x faster than Ruby Sass +* 1.7x faster than Dart Sass on Node +* 10.4x faster than Ruby Sass ## Following Sparse `@extend` Running on a file containing `.y {a: b}`, 2^17 instances of `.foo {a: b}`, and then `.x {@extend .y}`: -* sassc: 1.724s -* Dart Sass from a script snapshot: 1.610s -* Dart Sass native executable: 1.568s -* Dart Sass on Node.js: 2.712s -* Ruby Sass with a hot cache: 16.670s +* sassc: 1.701s +* Dart Sass from a script snapshot: 1.568s +* Dart Sass native executable: 1.543s +* Dart Sass on Node.js: 2.821s +* Ruby Sass with a hot cache: 16.469s Based on these numbers, Dart Sass from a native executable is approximately: * 1.1x faster than libsass -* 1.7x faster than Dart Sass on Node -* 10.6x faster than Ruby Sass +* 1.8x faster than Dart Sass on Node +* 10.7x faster than Ruby Sass ## Preceding Dense `@extend` Running on a file containing `.bar {@extend .foo}` followed by 2^17 instances of `.foo {a: b}`: -* sassc: 2.290s -* Dart Sass from a script snapshot: 2.476s -* Dart Sass native executable: 2.566s -* Dart Sass on Node.js: 5.399s -* Ruby Sass with a hot cache: 29.002s +* sassc: 2.260s +* Dart Sass from a script snapshot: 2.405s +* Dart Sass native executable: 2.526s +* Dart Sass on Node.js: 5.612s +* Ruby Sass with a hot cache: 28.690s Based on these numbers, Dart Sass from a native executable is approximately: * 1.1x slower than libsass -* 2.1x faster than Dart Sass on Node -* 11.3x faster than Ruby Sass +* 2.2x faster than Dart Sass on Node +* 11.4x faster than Ruby Sass ## Following Dense `@extend` Running on a file containing 2^17 instances of `.foo {a: b}` followed by `.bar {@extend .foo}`: -* sassc: 2.317s -* Dart Sass from a script snapshot: 2.381s -* Dart Sass native executable: 2.461s -* Dart Sass on Node.js: 5.481s -* Ruby Sass with a hot cache: 29.197s +* sassc: 2.289s +* Dart Sass from a script snapshot: 2.396s +* Dart Sass native executable: 2.457s +* Dart Sass on Node.js: 6.319s +* Ruby Sass with a hot cache: 28.708s Based on these numbers, Dart Sass from a native executable is approximately: * 1.1x slower than libsass -* 2.2x faster than Dart Sass on Node -* 11.9x faster than Ruby Sass +* 2.6x faster than Dart Sass on Node +* 11.7x faster than Ruby Sass ## Bootstrap Running on a file containing 16 instances of importing the Bootstrap framework: -* sassc: 0.763s -* Dart Sass from a script snapshot: 1.613s -* Dart Sass native executable: 0.992s -* Dart Sass on Node.js: 3.529s -* Ruby Sass with a hot cache: 12.969s +* sassc: 0.767s +* Dart Sass from a script snapshot: 1.534s +* Dart Sass native executable: 0.955s +* Dart Sass on Node.js: 3.156s +* Ruby Sass with a hot cache: 12.521s Based on these numbers, Dart Sass from a native executable is approximately: -* 1.3x slower than libsass -* 3.6x faster than Dart Sass on Node +* 1.2x slower than libsass +* 3.3x faster than Dart Sass on Node * 13.1x faster than Ruby Sass ## a11ycolor Running on a file containing test cases for a computation-intensive color-processing library: -* sassc: 0.262s -* Dart Sass from a script snapshot: 0.805s -* Dart Sass native executable: 0.612s -* Dart Sass on Node.js: 1.876s -* Ruby Sass with a hot cache: 5.396s +* sassc: 0.248s +* Dart Sass from a script snapshot: 0.736s +* Dart Sass native executable: 0.565s +* Dart Sass on Node.js: 1.043s +* Ruby Sass with a hot cache: 5.091s Based on these numbers, Dart Sass from a native executable is approximately: * 2.3x slower than libsass -* 3.1x faster than Dart Sass on Node -* 8.8x faster than Ruby Sass +* 1.8x faster than Dart Sass on Node +* 9.0x faster than Ruby Sass ## Susy Running on a file containing test cases for the computation-intensive Susy grid framework: -* sassc: 0.244s +* sassc: 0.248s * Dart Sass from a script snapshot: 0.673s -* Dart Sass native executable: 0.248s -* Dart Sass on Node.js: 1.361s -* Ruby Sass with a hot cache: 1.576s +* Dart Sass native executable: 0.237s +* Dart Sass on Node.js: 0.990s +* Ruby Sass with a hot cache: 1.527s Based on these numbers, Dart Sass from a native executable is approximately: * identical to libsass -* 5.5x faster than Dart Sass on Node +* 4.2x faster than Dart Sass on Node * 6.4x faster than Ruby Sass # Prior Measurements +* [1.22.4](https://github.com/sass/dart-sass/blob/a7172a2b1dd48b339e5d57159ed364ffb9f5812e/perf.md). * [1.20.2](https://github.com/sass/dart-sass/blob/4b7699291c9f69533d25980d23b0647266b665f2/perf.md). * [1.13.4](https://github.com/sass/dart-sass/blob/b6ccc91a138e75420227ff79381c5f70e60254f1/perf.md). * [1.6.0](https://github.com/sass/dart-sass/blob/048cbe197a77e1cf4b837a40a5acb737e949fd5c/perf.md).