From e0730eeaa5231841a7eba080c8170e41278c3c52 Mon Sep 17 00:00:00 2001 From: Brian White Date: Wed, 4 Feb 2015 11:11:48 -0500 Subject: [PATCH] benchmark: allow compare via fine-grained filters Before this commit, only benchmark targets defined in Makefile could be used. This commit allows execution of common.js directly and passing of filter arguments directly, allowing you to run either a subset of benchmarks or a single specific benchmark for comparison. PR-URL: https://github.com/iojs/io.js/pull/711 Reviewed-By: Colin Ihrig Reviewed-By: Jeremiah Senkpiel --- benchmark/compare.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/benchmark/compare.js b/benchmark/compare.js index d6ad44922dd43d..edb116d0c64baa 100644 --- a/benchmark/compare.js +++ b/benchmark/compare.js @@ -1,10 +1,12 @@ var usage = 'node benchmark/compare.js ' + ' ' + - '[--html] [--red|-r] [--green|-g]'; + '[--html] [--red|-r] [--green|-g] ' + + '[-- [testFilter]]'; var show = 'both'; var nodes = []; var html = false; +var benchmarks; for (var i = 2; i < process.argv.length; i++) { var arg = process.argv[i]; @@ -21,8 +23,15 @@ for (var i = 2; i < process.argv.length; i++) { case '-h': case '-?': case '--help': console.log(usage); process.exit(0); + break; + case '--': + benchmarks = []; + break; default: - nodes.push(arg); + if (Array.isArray(benchmarks)) + benchmarks.push(arg); + else + nodes.push(arg); break; } } @@ -65,7 +74,11 @@ function run() { env.NODE = node; var out = ''; - var child = spawn('make', [runBench], { env: env }); + var child; + if (Array.isArray(benchmarks) && benchmarks.length) + child = spawn(node, ['benchmark/common.js'].concat(benchmarks), { env: env }); + else + child = spawn('make', [runBench], { env: env }); child.stdout.setEncoding('utf8'); child.stdout.on('data', function(c) { out += c;