[前][次][番号順一覧][スレッド一覧]

ruby-changes:20382

From: drbrain <ko1@a...>
Date: Thu, 7 Jul 2011 06:48:08 +0900 (JST)
Subject: [ruby-changes:20382] drbrain:r32430 (trunk): * benchmark/driver.rb: Add difference column to report that averages

drbrain	2011-07-07 06:47:56 +0900 (Thu, 07 Jul 2011)

  New Revision: 32430

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=32430

  Log:
    * benchmark/driver.rb:  Add difference column to report that averages
      across all runs of a benchmark.  [Ruby 1.9 - Feature #4982]

  Modified files:
    trunk/ChangeLog
    trunk/benchmark/driver.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 32429)
+++ ChangeLog	(revision 32430)
@@ -1,3 +1,8 @@
+Thu Jul  7 06:46:12 2011  Eric Hodel  <drbrain@s...>
+
+	* benchmark/driver.rb:  Add difference column to report that averages
+	  across all runs of a benchmark.  [Ruby 1.9 - Feature #4982]
+
 Thu Jul  7 06:19:38 2011  Eric Hodel  <drbrain@s...>
 
 	* lib/rubygems.rb:  Reduce requires to improve `make benchmark`.
Index: benchmark/driver.rb
===================================================================
--- benchmark/driver.rb	(revision 32429)
+++ benchmark/driver.rb	(revision 32430)
@@ -90,6 +90,10 @@
     end
   end
 
+  def average results
+    results.inject(:+) / results.length
+  end
+
   def show_results
     output
 
@@ -109,7 +113,10 @@
       output "minimum results in each #{@repeat} measurements."
     end
 
-    output "name\t#{@execs.map{|(e, v)| v}.join("\t")}"
+    difference = "\taverage difference" if @execs.length == 2
+    total_difference = 0
+
+    output "name\t#{@execs.map{|(e, v)| v}.join("\t")}#{difference}"
     @results.each{|v, result|
       rets = []
       s = nil
@@ -129,8 +136,20 @@
         end
         rets << sprintf("%.3f", r)
       }
+
+      if difference
+        diff = average(result.last) - average(result.first)
+        total_difference += diff
+        rets << sprintf("%.3f", diff)
+      end
+
       output "#{v}#{s}\t#{rets.join("\t")}"
     }
+
+    if difference and @verbose
+      output '-----------------------------------------------------------'
+      output "average total difference is #{total_difference}"
+    end
   end
 
   def files

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]