From c3c7f821ee46648c8f0719bfdf3fc86f5fde6516 Mon Sep 17 00:00:00 2001 From: Ardalan Amini Date: Mon, 25 Jul 2022 16:50:56 +0430 Subject: [PATCH] feat: Improve benchmark script (#6) --- benchmarks/README.md | 34 ++++++++++++++++++---------------- scripts/benchmark.ts | 18 ++++++++++++++++-- 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/benchmarks/README.md b/benchmarks/README.md index 309f0bf..2120953 100644 --- a/benchmarks/README.md +++ b/benchmarks/README.md @@ -1,20 +1,22 @@ # Benchmarks ```shell -╔═══════════════════════════╤═══════════════════════════╤═══════════════════════════╤═══════════════════════════╗ -║ CSS File │ Original Size │ Renamed Size │ Improvement ║ -╟───────────────────────────┼───────────────────────────┼───────────────────────────┼───────────────────────────╢ -║ antd-v4.21.7 │ 709.411 KB │ 546.281 KB │ 22.995% ║ -╟───────────────────────────┼───────────────────────────┼───────────────────────────┼───────────────────────────╢ -║ antd-v4.21.7.min │ 545.281 KB │ 382.627 KB │ 29.829% ║ -╟───────────────────────────┼───────────────────────────┼───────────────────────────┼───────────────────────────╢ -║ bootstrap-v5.2.0-beta1 │ 231.991 KB │ 173.111 KB │ 25.38% ║ -╟───────────────────────────┼───────────────────────────┼───────────────────────────┼───────────────────────────╢ -║ bootstrap-v5.2.0-beta1.mi │ 188.949 KB │ 130.069 KB │ 31.162% ║ -║ n │ │ │ ║ -╟───────────────────────────┼───────────────────────────┼───────────────────────────┼───────────────────────────╢ -║ materialize-v1.0.0 │ 175.044 KB │ 147.266 KB │ 15.869% ║ -╟───────────────────────────┼───────────────────────────┼───────────────────────────┼───────────────────────────╢ -║ materialize-v1.0.0.min │ 138.517 KB │ 110.738 KB │ 20.054% ║ -╚═══════════════════════════╧═══════════════════════════╧═══════════════════════════╧═══════════════════════════╝ +╔══════════════════════╤══════════════════════╤══════════════════════╤══════════════════════╤══════════════════════╗ +║ CSS File │ Original Size │ Renamed Size │ Improvement │ Overall Improvement ║ +╟──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────╢ +║ antd-v4.21.7 │ 709.411 KB │ 546.281 KB │ 22.995% │ 22.995% ║ +╟──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────╢ +║ antd-v4.21.7.min │ 545.281 KB │ 382.627 KB │ 29.829% │ 46.064% ║ +╟──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────╢ +║ bootstrap-v5.2.0-bet │ 231.991 KB │ 173.111 KB │ 25.38% │ 25.38% ║ +║ a1 │ │ │ │ ║ +╟──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────╢ +║ bootstrap-v5.2.0-bet │ 188.949 KB │ 130.069 KB │ 31.162% │ 43.934% ║ +║ a1.min │ │ │ │ ║ +╟──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────╢ +║ materialize-v1.0.0 │ 175.044 KB │ 147.266 KB │ 15.869% │ 15.869% ║ +╟──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────╢ +║ materialize-v1.0.0.m │ 138.517 KB │ 110.738 KB │ 20.054% │ 36.737% ║ +║ in │ │ │ │ ║ +╚══════════════════════╧══════════════════════╧══════════════════════╧══════════════════════╧══════════════════════╝ ``` diff --git a/scripts/benchmark.ts b/scripts/benchmark.ts index 557a5eb..f1edcfc 100644 --- a/scripts/benchmark.ts +++ b/scripts/benchmark.ts @@ -17,9 +17,9 @@ const files = readdirSync(DIR).filter(file => file.endsWith(".css")); const stream = createStream({ columnDefault: { alignment: "center", - width : 25, + width : 20, }, - columnCount: 4, + columnCount: 5, }); stream.write([ @@ -27,8 +27,11 @@ stream.write([ "Original Size", "Renamed Size", "Improvement", + "Overall Improvement", ]); +const FILE_SIZE = new Map; + async function benchmark(): Promise { for (const file of files) { const from = resolve(DIR, file); @@ -37,6 +40,10 @@ async function benchmark(): Promise { const originalSize = Buffer.byteLength(css); + const key = file.replace(/(?:\.min)?\.css$/, ""); + + if (!file.endsWith(".min.css")) FILE_SIZE.set(key, originalSize); + // eslint-disable-next-line no-await-in-loop const result = await postcss([minicss()]).process( css, @@ -48,6 +55,9 @@ async function benchmark(): Promise { const renamedSize = Buffer.byteLength(result.css); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const baseSize = FILE_SIZE.get(key)!; + stream.write([ file.replace(/\.css$/, ""), `${ (originalSize / KB).toLocaleString("en-US", { maximumFractionDigits: 3 }) } KB`, @@ -56,6 +66,10 @@ async function benchmark(): Promise { style : "percent", maximumFractionDigits: 3, }), + ((baseSize - renamedSize) / baseSize).toLocaleString("en-US", { + style : "percent", + maximumFractionDigits: 3, + }), ]); } }