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

ruby-changes:25173

From: ko1 <ko1@a...>
Date: Tue, 16 Oct 2012 22:26:56 +0900 (JST)
Subject: [ruby-changes:25173] ko1:r37225 (trunk): * benchmark/driver.rb (show_results): Show speedup ratio

ko1	2012-10-16 22:26:46 +0900 (Tue, 16 Oct 2012)

  New Revision: 37225

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

  Log:
    * benchmark/driver.rb (show_results): Show speedup ratio
      with first executables score at last of results
      if two or more executrables are given.

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

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 37224)
+++ ChangeLog	(revision 37225)
@@ -1,3 +1,9 @@
+Tue Oct 16 22:24:44 2012  Koichi Sasada  <ko1@a...>
+
+	* benchmark/driver.rb (show_results): Show speedup ratio
+	  with first executables score at last of results
+	  if two or more executrables are given.
+
 Tue Oct 16 21:59:01 2012  Koichi Sasada  <ko1@a...>
 
 	* benchmark/driver.rb: some refactoring.
Index: benchmark/driver.rb
===================================================================
--- benchmark/driver.rb	(revision 37224)
+++ benchmark/driver.rb	(revision 37225)
@@ -90,8 +90,27 @@
     end
   end
 
-  def average results
-    results.inject(:+) / results.length
+  def adjusted_results name, results
+    s = nil
+    results.each_with_index{|e, i|
+      r = e.min
+      case name
+      when /^vm1_/
+        if @loop_wl1
+          r -= @loop_wl1[i]
+          r = 0 if r < 0
+          s = '*'
+        end
+      when /^vm2_/
+        if @loop_wl2
+          r -= @loop_wl2[i]
+          r = 0 if r < 0
+          s = '*'
+        end
+      end
+      yield r
+    }
+    s
   end
 
   def show_results
@@ -113,30 +132,38 @@
       output "minimum results in each #{@repeat} measurements."
     end
 
+    output "Execution time (sec)"
     output "name\t#{@execs.map{|(_, v)| v}.join("\t")}"
     @results.each{|v, result|
       rets = []
-      s = nil
-      result.each_with_index{|e, i|
-        r = e.min
-        case v
-        when /^vm1_/
-          if @loop_wl1
-            r -= @loop_wl1[i]
-            s = '*'
-          end
-        when /^vm2_/
-          if @loop_wl2
-            r -= @loop_wl2[i]
-            s = '*'
-          end
-        end
+      s = adjusted_results(v, result){|r|
         rets << sprintf("%.3f", r)
       }
-
       output "#{v}#{s}\t#{rets.join("\t")}"
     }
 
+    if @execs.size > 1
+      output
+      output "Speedup ratio comare with the result of `#{@execs[0]}' (greater is better)"
+      output "name\t#{@execs[1..-1].map{|(_, v)| v}.join("\t")}"
+      @results.each{|v, result|
+        rets = []
+        first_value = nil
+        s = adjusted_results(v, result){|r|
+          if first_value
+            if r == 0
+              rets << sprintf("%.3f", "Error")
+            else
+              rets << sprintf("%.3f", first_value/r)
+            end
+          else
+            first_value = r
+          end
+        }
+        output "#{v}#{s}\t#{rets.join("\t")}"
+      }
+    end
+
     if @opt[:output]
       output
       output "Log file: #{@opt[:output]}"

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

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