benchmark: allow compare via fine-grained filters
authorBrian White <mscdex@mscdex.net>
Wed, 4 Feb 2015 16:11:48 +0000 (11:11 -0500)
committercjihrig <cjihrig@gmail.com>
Wed, 4 Feb 2015 21:55:18 +0000 (16:55 -0500)
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 <cjihrig@gmail.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
benchmark/compare.js

index d6ad449..edb116d 100644 (file)
@@ -1,10 +1,12 @@
 var usage = 'node benchmark/compare.js ' +
             '<node-binary1> <node-binary2> ' +
-            '[--html] [--red|-r] [--green|-g]';
+            '[--html] [--red|-r] [--green|-g] ' +
+            '[-- <type> [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;