benchmarks/Rakefile
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sat, 19 Jan 2013 23:54:47 +0000
branchrefactoring-vmdata
changeset 1986 9e63ab553922
parent 1818 2e5ed72e7dfd
child 2015 fbbdc7baf6f9
permissions -rw-r--r--
JavaNativeMethod & their implementation transformed to pass a reveiver. Java still does not boot at this point, some overloaded natives in sun,misc.Unsafe has to be fixed manually.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
     1
#require 'pry'
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
     2
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
     3
require 'yaml'
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
     4
1806
4468ee811835 More debugging support & comments
vranyj1
parents: 1802
diff changeset
     5
4468ee811835 More debugging support & comments
vranyj1
parents: 1802
diff changeset
     6
# DO NOT EDIT following list to temporarily run one benchmark for testing.
4468ee811835 More debugging support & comments
vranyj1
parents: 1802
diff changeset
     7
# You can run it by:
4468ee811835 More debugging support & comments
vranyj1
parents: 1802
diff changeset
     8
#
4468ee811835 More debugging support & comments
vranyj1
parents: 1802
diff changeset
     9
#   rake <bench>
4468ee811835 More debugging support & comments
vranyj1
parents: 1802
diff changeset
    10
#
4468ee811835 More debugging support & comments
vranyj1
parents: 1802
diff changeset
    11
# for instance:
4468ee811835 More debugging support & comments
vranyj1
parents: 1802
diff changeset
    12
#
4468ee811835 More debugging support & comments
vranyj1
parents: 1802
diff changeset
    13
#   rake Jasper
4468ee811835 More debugging support & comments
vranyj1
parents: 1802
diff changeset
    14
#
4468ee811835 More debugging support & comments
vranyj1
parents: 1802
diff changeset
    15
# alternatively, to run just stx:libjava version, run it by:
4468ee811835 More debugging support & comments
vranyj1
parents: 1802
diff changeset
    16
#
4468ee811835 More debugging support & comments
vranyj1
parents: 1802
diff changeset
    17
#   ./benchmark-runner.st -b Jasper -n 1
4468ee811835 More debugging support & comments
vranyj1
parents: 1802
diff changeset
    18
#
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    19
TESTS = [   
1809
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    20
        # Order matters! 
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    21
        # Micro...
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    22
        [ "Ackerman" ,             8         ] ,
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    23
        [ "Ary" ,                  100000    ] ,        
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    24
        [ "Hash" ,                 10000     ] ,
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    25
        [ "Strcat" ,               5000000   ] ,
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    26
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    27
        # Macro...
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    28
        [ "Groovy" ,               5         ] ,
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    29
        [ "Saxon" ,                10        ] ,
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    30
        # [ "Jasper" ,               1 ] ,
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    31
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    32
        # Interop...        
1806
4468ee811835 More debugging support & comments
vranyj1
parents: 1802
diff changeset
    33
        [ "MethodInvocation" ,     500000000 ] ,
1809
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    34
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    35
        [ "PrimitiveArguments" ,   100000000 ] ,
1806
4468ee811835 More debugging support & comments
vranyj1
parents: 1802
diff changeset
    36
        [ "ObjectArguments" ,      100000000 ] ,
1809
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    37
        [ "WrappedArguments" ,     100000000 ] ,
1781
feb3223a8ccd Warmup fixes
vranyj1
parents: 1770
diff changeset
    38
1809
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    39
        [ "OverloadedMethods2" ,   100000000 ] ,
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    40
        [ "OverloadedMethods" ,    100000000 ] ,
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    41
        
1781
feb3223a8ccd Warmup fixes
vranyj1
parents: 1770
diff changeset
    42
        # Broken 
feb3223a8ccd Warmup fixes
vranyj1
parents: 1770
diff changeset
    43
        # [ "CrossLanguageInvocation" ,  500000000 ] ,
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    44
        # [ "Threadring" ,           100000 ] ,
1785
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
    45
        
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    46
        
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    47
        [] # terminator, to make commenting tests easy!!!
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    48
        ]
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    49
1785
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
    50
RESULTS_LAST="result.txt"
1809
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    51
RESULTS_LAST_CSV="result.csv"
1785
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
    52
RESULTS_LOG="results-log.txt"
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
    53
1809
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    54
# Defines how many times given benchmark is run. The minimal value
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    55
# is then taken. 
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    56
BENCHMARK_RUNS=5
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    57
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    58
task :default => [:all]
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    59
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    60
task :all => [:compile, :run]
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    61
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    62
task :build => [ :compile ]
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    63
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    64
task :compile do  
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    65
    Dir.chdir 'java' do 
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    66
        system 'ant'    
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    67
    end
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    68
end
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    69
1798
ee814b63d056 Setup fixes (stack size, required for Ackerman
vranyj1
parents: 1790
diff changeset
    70
task 'echo-classpath' do
ee814b63d056 Setup fixes (stack size, required for Ackerman
vranyj1
parents: 1790
diff changeset
    71
        puts "export CLASSPATH=#{classpath()}"
ee814b63d056 Setup fixes (stack size, required for Ackerman
vranyj1
parents: 1790
diff changeset
    72
end
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    73
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    74
task :clean do
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    75
    Dir.chdir 'java' do 
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    76
        system 'ant clean'    
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    77
    end  
1785
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
    78
    rm_f RESULTS_LAST
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    79
end
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    80
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    81
task :run do
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    82
  results = Hash.new
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    83
  TESTS.each do | spec |
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    84
    if spec.size == 2      
1809
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    85
      benchmark(spec[0], spec[1], results, BENCHMARK_RUNS)  
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    86
    end      
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    87
  end
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    88
  
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
    89
  results = Hash[results.sort]
1785
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
    90
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
    91
  write_results_txt(STDOUT, results)  
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
    92
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
    93
  if File.exist? RESULTS_LAST
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
    94
    File.delete(RESULTS_LAST)
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
    95
  end
1809
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    96
  if File.exist? RESULTS_LAST_CSV
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    97
    File.delete(RESULTS_LAST_CSV)
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    98
  end
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
    99
1785
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   100
  write_results_txt_to_file(RESULTS_LAST, results)
1809
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   101
  write_results_csv_to_file(RESULTS_LAST_CSV, results)
1785
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   102
  write_results_txt_to_file(RESULTS_LOG, results)  
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   103
end
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   104
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   105
# Generate tasks to run individual benchmarks
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   106
TESTS.each do | spec |
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   107
  if (spec.size == 2)
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   108
    task spec[0] do        
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   109
      results = Hash.new
1809
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   110
      benchmark(spec[0], spec[1], results, BENCHMARK_RUNS)
1785
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   111
      write_results_txt(STDOUT, results)
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   112
    end
1785
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   113
  end
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   114
end
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   115
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   116
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   117
# Run given benchmark
1809
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   118
def benchmark(test, passes, results, runs)
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   119
    puts "Benchmarking #{test} (#{runs} passes)"      
1785
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   120
    times = Hash.new
1790
7415875de93d More results + fix for running Smalltalk benchmarks (JIT enabled)
vranyj1
parents: 1789
diff changeset
   121
    puts "export CLASSPATH=#{classpath()}"
7415875de93d More results + fix for running Smalltalk benchmarks (JIT enabled)
vranyj1
parents: 1789
diff changeset
   122
    ENV['CLASSPATH'] = classpath()
1809
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   123
    
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   124
    [:jvm, :stx, :libjava, :stx2libjava].each do | platform |        
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   125
        times[platform] = measure(test, passes, platform, runs)
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   126
    end
1785
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   127
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   128
    results[test] = times
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   129
end
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   130
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   131
# Return a class path arguments to be passed to java/javac
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   132
# (including '-cp') or an empty string
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   133
def classpath()
1800
7b0801c70b7a updated rakefile classpath
hlopkmar
parents: 1798
diff changeset
   134
   return '/usr/share/java/groovy-all.jar:../libs/libs/saxon-9.1.0.8.jar:/usr/share/java/saxonb-9.1.0.8.jar:/usr/share/java/itext-2.1.7.jar:/usr/share/java/jasperreports.jar:/usr/share/java/commons-digester.jar:/usr/share/java/commons-logging.jar:/usr/share/java/commons-collections3.jar:/usr/share/java/commons-beanutils.jar:java/bin:.'
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   135
end
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   136
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   137
1809
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   138
def measure(test, passes, platform, runs)
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   139
    min = 999999999
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   140
    i = 1;
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   141
    while (i <= runs)
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   142
        puts "Pass #{i}"
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   143
        t = measure_single(test, passes, platform)        
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   144
        if (t == 'N/A')
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   145
            min = t
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   146
            break;
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   147
        end
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   148
        if (min > t)
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   149
            min = t
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   150
        end
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   151
        i = i + 1
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   152
    end
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   153
    return min
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   154
end
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   155
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   156
# Runs a given bench on given platform and return the time. 
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   157
# If bench fails (non-zero status value), raise an exception. 
1809
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   158
def measure_single(test, passes, platform)
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   159
       if (platform == :'jvm') 
1790
7415875de93d More results + fix for running Smalltalk benchmarks (JIT enabled)
vranyj1
parents: 1789
diff changeset
   160
          command = "java stx.libjava.benchmarks.#{test} #{passes}" 
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   161
       elsif (platform == :'stx')
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   162
          command = "./benchmark-runner.sh --smalltalk -b #{test} -n #{passes} 2>&1"
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   163
       elsif (platform == :'libjava') 
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   164
          command = "./benchmark-runner.sh --java -b #{test} -n #{passes} 2>&1"
1781
feb3223a8ccd Warmup fixes
vranyj1
parents: 1770
diff changeset
   165
       elsif (platform == :'stx2libjava') 
feb3223a8ccd Warmup fixes
vranyj1
parents: 1770
diff changeset
   166
          command = "./benchmark-runner.sh --smalltalk2java -b #{test} -n #{passes} 2>&1"
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   167
       else 
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   168
          raise Exception.new("Unssuported platform: #{platform}")          
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   169
       end
1790
7415875de93d More results + fix for running Smalltalk benchmarks (JIT enabled)
vranyj1
parents: 1789
diff changeset
   170
        
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   171
       puts " running: #{command}"
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   172
       output = `#{command}`
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   173
       if ($? != 0) 
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   174
           puts output
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   175
           raise Exception.new("Command failed!")
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   176
       end
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   177
       execution_time = (output.scan /^EXECUTION TIME: N\/A/).last()
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   178
       if execution_time 
1785
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   179
          puts "      =>  N/A"
1770
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   180
          return "N/A"
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   181
       end
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   182
       
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   183
       execution_time = (output.scan /^EXECUTION TIME: \d*[\.\d]\d*$/).last()
dd7b1ec5b933 More work on Rakefile
vranyj1
parents:
diff changeset
   184
       execution_time = execution_time.gsub /^EXECUTION TIME: /, ''
1785
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   185
       puts "      =>  #{execution_time}"
1809
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   186
       return execution_time.to_i
1781
feb3223a8ccd Warmup fixes
vranyj1
parents: 1770
diff changeset
   187
end
1785
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   188
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   189
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   190
def write_results_txt_to_file(filename, results)
1789
a4afad704bcb Fixes in callgrind integration
vranyj1
parents: 1785
diff changeset
   191
  File.open(filename, "a+") do |file| 
1785
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   192
    write_results_txt(file, results)
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   193
  end
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   194
end
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   195
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   196
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   197
def write_results_txt(file, results)   
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   198
    file.write("\n")
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   199
    file.write(Time.now.to_s)    
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   200
    file.write("\n")
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   201
    values = [[ "Test", "JVM", "STX-S", "STX-J" , "STX-J2S" ]]
1809
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   202
    TESTS.each do | pair |
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   203
      if (pair.size == 2) 
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   204
        key = pair[0]
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   205
        if (results.has_key? key)
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   206
          values << [ key, results[key][:jvm], results[key][:stx], results[key][:libjava], results[key][:stx2libjava] ]
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   207
        end
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   208
      end  
1785
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   209
    end
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   210
    max_lengths = values[0].map { |val| val.length }
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   211
    values.each do |row|
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   212
      row.each_with_index do |elem, index|
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   213
        elem_size = elem.size
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   214
        max_lengths[index] = elem_size if elem_size > max_lengths[index]
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   215
      end
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   216
    end
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   217
    values.each do |val|
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   218
      format = max_lengths.map { |length| "%#{length}s" }.join(" " * 3)
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   219
      file.write(format % val)
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   220
      file.write("\n")
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   221
    end 
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   222
    file.write("--\n")
417582324c34 More refactoring, added warmup to JVM benchmarks
vranyj1
parents: 1781
diff changeset
   223
  
1798
ee814b63d056 Setup fixes (stack size, required for Ackerman
vranyj1
parents: 1790
diff changeset
   224
end        
1809
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   225
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   226
def write_results_csv_to_file(filename, results)
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   227
  File.open(filename, "a+") do |file| 
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   228
    write_results_csv(file, results)
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   229
  end
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   230
end
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   231
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   232
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   233
def write_results_csv(file, results)   
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   234
    values = [[ "Test", "JVM", "STX-S", "STX-J" , "STX-J2S" ]]
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   235
    TESTS.each do | pair |
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   236
      if (pair.size == 2) 
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   237
        key = pair[0]
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   238
        if (results.has_key? key)
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   239
          values << [ key, results[key][:jvm], results[key][:stx], results[key][:libjava], results[key][:stx2libjava] ]
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   240
        end
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   241
      end  
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   242
    end
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   243
    max_lengths = values[0].map { |val| val.length }
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   244
    values.each do |row|
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   245
      row.each_with_index do |elem, index|
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   246
        elem_size = elem.size
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   247
        max_lengths[index] = elem_size if elem_size > max_lengths[index]
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   248
      end
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   249
    end
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   250
    values.each do |val|
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   251
      format = max_lengths.map { |length| "%#{length}s , " }.join(" " * 3)
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   252
      file.write(format % val)
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   253
      file.write("\n")
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   254
    end 
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   255
end        
bfce0e9f497f New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents: 1806
diff changeset
   256