author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Thu, 31 Jan 2013 12:22:15 +0000 | |
branch | development |
changeset 2015 | fbbdc7baf6f9 |
parent 1818 | 2e5ed72e7dfd |
child 2380 | 9195eccdcbd9 |
permissions | -rw-r--r-- |
1770 | 1 |
#require 'pry' |
2 |
||
3 |
require 'yaml' |
|
4 |
||
1806 | 5 |
|
6 |
# DO NOT EDIT following list to temporarily run one benchmark for testing. |
|
7 |
# You can run it by: |
|
8 |
# |
|
9 |
# rake <bench> |
|
10 |
# |
|
11 |
# for instance: |
|
12 |
# |
|
13 |
# rake Jasper |
|
14 |
# |
|
15 |
# alternatively, to run just stx:libjava version, run it by: |
|
16 |
# |
|
17 |
# ./benchmark-runner.st -b Jasper -n 1 |
|
18 |
# |
|
1770 | 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 ] , |
2015
fbbdc7baf6f9
Added Native1 benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1818
diff
changeset
|
26 |
[ "Native1" , 1000000 ] , |
fbbdc7baf6f9
Added Native1 benchmark.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
1818
diff
changeset
|
27 |
|
1809
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
28 |
# Macro... |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
29 |
[ "Groovy" , 5 ] , |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
30 |
[ "Saxon" , 10 ] , |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
31 |
# [ "Jasper" , 1 ] , |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
32 |
|
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
33 |
# Interop... |
1806 | 34 |
[ "MethodInvocation" , 500000000 ] , |
1809
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
35 |
|
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
36 |
[ "PrimitiveArguments" , 100000000 ] , |
1806 | 37 |
[ "ObjectArguments" , 100000000 ] , |
1809
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
38 |
[ "WrappedArguments" , 100000000 ] , |
1781 | 39 |
|
1809
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
40 |
[ "OverloadedMethods2" , 100000000 ] , |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
41 |
[ "OverloadedMethods" , 100000000 ] , |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
42 |
|
1781 | 43 |
# Broken |
44 |
# [ "CrossLanguageInvocation" , 500000000 ] , |
|
1770 | 45 |
# [ "Threadring" , 100000 ] , |
1785 | 46 |
|
1770 | 47 |
|
48 |
[] # terminator, to make commenting tests easy!!! |
|
49 |
] |
|
50 |
||
1785 | 51 |
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
|
52 |
RESULTS_LAST_CSV="result.csv" |
1785 | 53 |
RESULTS_LOG="results-log.txt" |
54 |
||
1809
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
55 |
# 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
|
56 |
# is then taken. |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
57 |
BENCHMARK_RUNS=5 |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
58 |
|
1770 | 59 |
task :default => [:all] |
60 |
||
61 |
task :all => [:compile, :run] |
|
62 |
||
63 |
task :build => [ :compile ] |
|
64 |
||
65 |
task :compile do |
|
66 |
Dir.chdir 'java' do |
|
67 |
system 'ant' |
|
68 |
end |
|
69 |
end |
|
70 |
||
1798 | 71 |
task 'echo-classpath' do |
72 |
puts "export CLASSPATH=#{classpath()}" |
|
73 |
end |
|
1770 | 74 |
|
75 |
task :clean do |
|
76 |
Dir.chdir 'java' do |
|
77 |
system 'ant clean' |
|
78 |
end |
|
1785 | 79 |
rm_f RESULTS_LAST |
1770 | 80 |
end |
81 |
||
82 |
task :run do |
|
83 |
results = Hash.new |
|
84 |
TESTS.each do | spec | |
|
85 |
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
|
86 |
benchmark(spec[0], spec[1], results, BENCHMARK_RUNS) |
1770 | 87 |
end |
88 |
end |
|
89 |
||
90 |
results = Hash[results.sort] |
|
1785 | 91 |
|
92 |
write_results_txt(STDOUT, results) |
|
93 |
||
94 |
if File.exist? RESULTS_LAST |
|
95 |
File.delete(RESULTS_LAST) |
|
96 |
end |
|
1809
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
97 |
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
|
98 |
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
|
99 |
end |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
100 |
|
1785 | 101 |
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
|
102 |
write_results_csv_to_file(RESULTS_LAST_CSV, results) |
1785 | 103 |
write_results_txt_to_file(RESULTS_LOG, results) |
104 |
end |
|
105 |
||
106 |
# Generate tasks to run individual benchmarks |
|
107 |
TESTS.each do | spec | |
|
108 |
if (spec.size == 2) |
|
109 |
task spec[0] do |
|
110 |
results = Hash.new |
|
1809
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
111 |
benchmark(spec[0], spec[1], results, BENCHMARK_RUNS) |
1785 | 112 |
write_results_txt(STDOUT, results) |
1770 | 113 |
end |
1785 | 114 |
end |
115 |
end |
|
116 |
||
117 |
||
118 |
# Run given benchmark |
|
1809
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
119 |
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
|
120 |
puts "Benchmarking #{test} (#{runs} passes)" |
1785 | 121 |
times = Hash.new |
1790
7415875de93d
More results + fix for running Smalltalk benchmarks (JIT enabled)
vranyj1
parents:
1789
diff
changeset
|
122 |
puts "export CLASSPATH=#{classpath()}" |
7415875de93d
More results + fix for running Smalltalk benchmarks (JIT enabled)
vranyj1
parents:
1789
diff
changeset
|
123 |
ENV['CLASSPATH'] = classpath() |
1809
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
124 |
|
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
125 |
[: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
|
126 |
times[platform] = measure(test, passes, platform, runs) |
1770 | 127 |
end |
1785 | 128 |
|
129 |
results[test] = times |
|
1770 | 130 |
end |
131 |
||
132 |
# Return a class path arguments to be passed to java/javac |
|
133 |
# (including '-cp') or an empty string |
|
134 |
def classpath() |
|
1800 | 135 |
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 | 136 |
end |
137 |
||
138 |
||
1809
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
139 |
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
|
140 |
min = 999999999 |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
141 |
i = 1; |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
142 |
while (i <= runs) |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
143 |
puts "Pass #{i}" |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
144 |
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
|
145 |
if (t == 'N/A') |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
146 |
min = t |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
147 |
break; |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
148 |
end |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
149 |
if (min > t) |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
150 |
min = t |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
151 |
end |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
152 |
i = i + 1 |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
153 |
end |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
154 |
return min |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
155 |
end |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
156 |
|
1770 | 157 |
# Runs a given bench on given platform and return the time. |
158 |
# 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
|
159 |
def measure_single(test, passes, platform) |
1770 | 160 |
if (platform == :'jvm') |
1790
7415875de93d
More results + fix for running Smalltalk benchmarks (JIT enabled)
vranyj1
parents:
1789
diff
changeset
|
161 |
command = "java stx.libjava.benchmarks.#{test} #{passes}" |
1770 | 162 |
elsif (platform == :'stx') |
163 |
command = "./benchmark-runner.sh --smalltalk -b #{test} -n #{passes} 2>&1" |
|
164 |
elsif (platform == :'libjava') |
|
165 |
command = "./benchmark-runner.sh --java -b #{test} -n #{passes} 2>&1" |
|
1781 | 166 |
elsif (platform == :'stx2libjava') |
167 |
command = "./benchmark-runner.sh --smalltalk2java -b #{test} -n #{passes} 2>&1" |
|
1770 | 168 |
else |
169 |
raise Exception.new("Unssuported platform: #{platform}") |
|
170 |
end |
|
1790
7415875de93d
More results + fix for running Smalltalk benchmarks (JIT enabled)
vranyj1
parents:
1789
diff
changeset
|
171 |
|
1770 | 172 |
puts " running: #{command}" |
173 |
output = `#{command}` |
|
174 |
if ($? != 0) |
|
175 |
puts output |
|
176 |
raise Exception.new("Command failed!") |
|
177 |
end |
|
178 |
execution_time = (output.scan /^EXECUTION TIME: N\/A/).last() |
|
179 |
if execution_time |
|
1785 | 180 |
puts " => N/A" |
1770 | 181 |
return "N/A" |
182 |
end |
|
183 |
||
184 |
execution_time = (output.scan /^EXECUTION TIME: \d*[\.\d]\d*$/).last() |
|
185 |
execution_time = execution_time.gsub /^EXECUTION TIME: /, '' |
|
1785 | 186 |
puts " => #{execution_time}" |
1809
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
187 |
return execution_time.to_i |
1781 | 188 |
end |
1785 | 189 |
|
190 |
||
191 |
def write_results_txt_to_file(filename, results) |
|
1789 | 192 |
File.open(filename, "a+") do |file| |
1785 | 193 |
write_results_txt(file, results) |
194 |
end |
|
195 |
end |
|
196 |
||
197 |
||
198 |
def write_results_txt(file, results) |
|
199 |
file.write("\n") |
|
200 |
file.write(Time.now.to_s) |
|
201 |
file.write("\n") |
|
202 |
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
|
203 |
TESTS.each do | pair | |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
204 |
if (pair.size == 2) |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
205 |
key = pair[0] |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
206 |
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
|
207 |
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
|
208 |
end |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
209 |
end |
1785 | 210 |
end |
211 |
max_lengths = values[0].map { |val| val.length } |
|
212 |
values.each do |row| |
|
213 |
row.each_with_index do |elem, index| |
|
214 |
elem_size = elem.size |
|
215 |
max_lengths[index] = elem_size if elem_size > max_lengths[index] |
|
216 |
end |
|
217 |
end |
|
218 |
values.each do |val| |
|
219 |
format = max_lengths.map { |length| "%#{length}s" }.join(" " * 3) |
|
220 |
file.write(format % val) |
|
221 |
file.write("\n") |
|
222 |
end |
|
223 |
file.write("--\n") |
|
224 |
||
1798 | 225 |
end |
1809
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
226 |
|
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
227 |
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
|
228 |
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
|
229 |
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
|
230 |
end |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
231 |
end |
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 |
|
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
234 |
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
|
235 |
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
|
236 |
TESTS.each do | pair | |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
237 |
if (pair.size == 2) |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
238 |
key = pair[0] |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
239 |
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
|
240 |
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
|
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 |
end |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
244 |
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
|
245 |
values.each do |row| |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
246 |
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
|
247 |
elem_size = elem.size |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
248 |
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
|
249 |
end |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
250 |
end |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
251 |
values.each do |val| |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
252 |
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
|
253 |
file.write(format % val) |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
254 |
file.write("\n") |
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 |
end |
bfce0e9f497f
New results. rake now produces also .csv for easy copy-paste to result.ods
vranyj1
parents:
1806
diff
changeset
|
257 |