rubykon 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +5 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +11 -0
  6. data/CHANGELOG.md +32 -0
  7. data/CODE_OF_CONDUCT.md +13 -0
  8. data/Gemfile +7 -0
  9. data/Guardfile +12 -0
  10. data/LICENSE +22 -0
  11. data/POSSIBLE_IMPROVEMENTS.md +25 -0
  12. data/README.md +36 -0
  13. data/Rakefile +6 -0
  14. data/benchmark/benchmark.sh +22 -0
  15. data/benchmark/full_playout.rb +17 -0
  16. data/benchmark/mcts_avg.rb +23 -0
  17. data/benchmark/playout.rb +15 -0
  18. data/benchmark/playout_micros.rb +188 -0
  19. data/benchmark/profiling/full_playout.rb +7 -0
  20. data/benchmark/profiling/mcts.rb +6 -0
  21. data/benchmark/results/HISTORY.md +541 -0
  22. data/benchmark/scoring.rb +20 -0
  23. data/benchmark/scoring_micros.rb +60 -0
  24. data/benchmark/support/benchmark-ips.rb +11 -0
  25. data/benchmark/support/benchmark-ips_shim.rb +143 -0
  26. data/benchmark/support/playout_help.rb +13 -0
  27. data/examples/mcts_laziness.rb +22 -0
  28. data/exe/rubykon +5 -0
  29. data/lib/benchmark/avg.rb +14 -0
  30. data/lib/benchmark/avg/benchmark_suite.rb +59 -0
  31. data/lib/benchmark/avg/job.rb +92 -0
  32. data/lib/mcts.rb +11 -0
  33. data/lib/mcts/examples/double_step.rb +68 -0
  34. data/lib/mcts/mcts.rb +13 -0
  35. data/lib/mcts/node.rb +88 -0
  36. data/lib/mcts/playout.rb +22 -0
  37. data/lib/mcts/root.rb +49 -0
  38. data/lib/rubykon.rb +13 -0
  39. data/lib/rubykon/board.rb +188 -0
  40. data/lib/rubykon/cli.rb +122 -0
  41. data/lib/rubykon/exceptions/exceptions.rb +1 -0
  42. data/lib/rubykon/exceptions/illegal_move_exception.rb +4 -0
  43. data/lib/rubykon/eye_detector.rb +27 -0
  44. data/lib/rubykon/game.rb +115 -0
  45. data/lib/rubykon/game_scorer.rb +62 -0
  46. data/lib/rubykon/game_state.rb +93 -0
  47. data/lib/rubykon/group.rb +99 -0
  48. data/lib/rubykon/group_tracker.rb +144 -0
  49. data/lib/rubykon/gtp_coordinate_converter.rb +25 -0
  50. data/lib/rubykon/move_validator.rb +55 -0
  51. data/lib/rubykon/version.rb +3 -0
  52. data/rubykon.gemspec +21 -0
  53. metadata +97 -0
@@ -0,0 +1,7 @@
1
+ # a simple script doing a full playout to use it with profiling tools
2
+
3
+ require_relative '../../lib/rubykon/'
4
+
5
+ game = Rubykon::Game.new
6
+ playouter = Rubykon::RandomPlayout.new
7
+ p playouter.play(game)
@@ -0,0 +1,6 @@
1
+ require_relative '../../lib/rubykon'
2
+
3
+ game_state = Rubykon::GameState.new
4
+ mcts = MCTS::MCTS.new
5
+
6
+ mcts.start game_state, 200
@@ -0,0 +1,541 @@
1
+ ## 0.3 (yeez have a look in the logs what changed)
2
+
3
+ Benchmarking is anew, with the help of the truffle/graal team a shim for benchmark/ips is in use that doesn't confuse the JIT as much yielding nice results.
4
+
5
+ Moreover, a second more macro benchmark is in use that runs a whole actual MCTS with a predefined number of playouts. This is benchmarked using benchmark/avg I wrote to be more suitable for more macro benchmarks. Also it doesn't do anything inbetween warmup and measuring, so it is not confusing truffle as much.
6
+
7
+ ### Playouts + Scoring
8
+
9
+
10
+ ```
11
+ Running 1.9.3 with
12
+ Using /home/tobi/.rvm/gems/ruby-1.9.3-p551
13
+ ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-linux]
14
+ Calculating -------------------------------------
15
+ 9x9 full playout (+ score)
16
+ 24.000 i/100ms
17
+ 13x13 full playout (+ score)
18
+ 10.000 i/100ms
19
+ 19x19 full playout (+ score)
20
+ 4.000 i/100ms
21
+ -------------------------------------------------
22
+ 9x9 full playout (+ score)
23
+ 252.308 (± 4.8%) i/s - 7.560k
24
+ 13x13 full playout (+ score)
25
+ 107.774 (±11.1%) i/s - 3.190k
26
+ 19x19 full playout (+ score)
27
+ 44.952 (± 8.9%) i/s - 1.344k
28
+
29
+
30
+ Running jruby with
31
+ Using /home/tobi/.rvm/gems/jruby-9.0.3.0
32
+ jruby 9.0.3.0 (2.2.2) 2015-10-21 633c9aa OpenJDK 64-Bit Server VM 25.45-b02 on 1.8.0_45-internal-b14 +jit [linux-amd64]
33
+ Calculating -------------------------------------
34
+ 9x9 full playout (+ score)
35
+ 38.000 i/100ms
36
+ 13x13 full playout (+ score)
37
+ 17.000 i/100ms
38
+ 19x19 full playout (+ score)
39
+ 7.000 i/100ms
40
+ -------------------------------------------------
41
+ 9x9 full playout (+ score)
42
+ 405.833 (± 4.9%) i/s - 12.160k
43
+ 13x13 full playout (+ score)
44
+ 181.332 (± 5.5%) i/s - 5.423k
45
+ 19x19 full playout (+ score)
46
+ 73.479 (± 6.8%) i/s - 2.198k
47
+
48
+
49
+ Running rbx-2.5.8 with
50
+ Using /home/tobi/.rvm/gems/rbx-2.5.8
51
+ rubinius 2.5.8 (2.1.0 bef51ae3 2015-11-08 3.4.2 JI) [x86_64-linux-gnu]
52
+ Calculating -------------------------------------
53
+ 9x9 full playout (+ score)
54
+ 18.000 i/100ms
55
+ 13x13 full playout (+ score)
56
+ 9.000 i/100ms
57
+ 19x19 full playout (+ score)
58
+ 4.000 i/100ms
59
+ -------------------------------------------------
60
+ 9x9 full playout (+ score)
61
+ 199.825 (± 4.0%) i/s - 5.994k
62
+ 13x13 full playout (+ score)
63
+ 92.732 (± 4.3%) i/s - 2.781k
64
+ 19x19 full playout (+ score)
65
+ 40.911 (± 4.9%) i/s - 1.224k
66
+
67
+
68
+ Running jruby-9 with --server -Xcompile.invokedynamic=true -J-Xmx1500m
69
+ Using /home/tobi/.rvm/gems/jruby-9.0.3.0
70
+ jruby 9.0.3.0 (2.2.2) 2015-10-21 633c9aa OpenJDK 64-Bit Server VM 25.45-b02 on 1.8.0_45-internal-b14 +jit [linux-amd64]
71
+ Calculating -------------------------------------
72
+ 9x9 full playout (+ score)
73
+ 66.000 i/100ms
74
+ 13x13 full playout (+ score)
75
+ 32.000 i/100ms
76
+ 19x19 full playout (+ score)
77
+ 12.000 i/100ms
78
+ -------------------------------------------------
79
+ 9x9 full playout (+ score)
80
+ 713.264 (± 6.6%) i/s - 21.318k
81
+ 13x13 full playout (+ score)
82
+ 302.691 (±13.2%) i/s - 8.864k
83
+ 19x19 full playout (+ score)
84
+ 121.265 (±14.0%) i/s - 3.540k
85
+
86
+
87
+ Running jruby-1 with
88
+ Using /home/tobi/.rvm/gems/jruby-1.7.22
89
+ jruby 1.7.22 (1.9.3p551) 2015-08-20 c28f492 on OpenJDK 64-Bit Server VM 1.8.0_45-internal-b14 +jit [linux-amd64]
90
+ Calculating -------------------------------------
91
+ 9x9 full playout (+ score)
92
+ 36.000 i/100ms
93
+ 13x13 full playout (+ score)
94
+ 16.000 i/100ms
95
+ 19x19 full playout (+ score)
96
+ 6.000 i/100ms
97
+ -------------------------------------------------
98
+ 9x9 full playout (+ score)
99
+ 353.815 (±12.7%) i/s - 10.404k
100
+ 13x13 full playout (+ score)
101
+ 163.234 (± 6.7%) i/s - 4.880k
102
+ 19x19 full playout (+ score)
103
+ 63.456 (±15.8%) i/s - 1.842k
104
+
105
+
106
+ Running 2.2 with
107
+ Using /home/tobi/.rvm/gems/ruby-2.2.3
108
+ ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]
109
+ Calculating -------------------------------------
110
+ 9x9 full playout (+ score)
111
+ 30.000 i/100ms
112
+ 13x13 full playout (+ score)
113
+ 12.000 i/100ms
114
+ 19x19 full playout (+ score)
115
+ 5.000 i/100ms
116
+ -------------------------------------------------
117
+ 9x9 full playout (+ score)
118
+ 300.910 (± 7.6%) i/s - 8.970k
119
+ 13x13 full playout (+ score)
120
+ 131.262 (±12.2%) i/s - 3.864k
121
+ 19x19 full playout (+ score)
122
+ 55.403 (± 7.2%) i/s - 1.655k
123
+
124
+
125
+ Using /home/tobi/.rvm/gems/ruby-2.2.3 with gemset rubykon
126
+ Running truffle graal with enough heap space
127
+ $ JAVACMD=../graalvm-jdk1.8.0/bin/java ../jruby/bin/jruby -X\+T -Xtruffle.core.load_path\=../jruby/truffle/src/main/ruby -r ./.jruby\+truffle_bundle/bundler/setup.rb -e puts\ RUBY_DESCRIPTION
128
+ jruby 9.0.4.0-SNAPSHOT (2.2.2) 2015-11-08 fd2c179 OpenJDK 64-Bit Server VM 25.40-b25-internal-graal-0.7 on 1.8.0-internal-b132 +jit [linux-amd64]
129
+ $ JAVACMD=../graalvm-jdk1.8.0/bin/java ../jruby/bin/jruby -X\+T -J-Xmx1500m -Xtruffle.core.load_path\=../jruby/truffle/src/main/ruby -r ./.jruby\+truffle_bundle/bundler/setup.rb benchmark/full_playout.rb
130
+ Calculating -------------------------------------
131
+ 9x9 full playout (+ score)
132
+ 39.000 i/100ms
133
+ 13x13 full playout (+ score)
134
+ 44.000 i/100ms
135
+ 19x19 full playout (+ score)
136
+ 16.000 i/100ms
137
+ -------------------------------------------------
138
+ 9x9 full playout (+ score)
139
+ 1.060k (± 16.2%) i/s - 30.654k
140
+ 13x13 full playout (+ score)
141
+ 460.080 (± 17.0%) i/s - 13.332k
142
+ 19x19 full playout (+ score)
143
+ 192.420 (± 14.0%) i/s - 5.632k
144
+
145
+ ```
146
+
147
+
148
+ ### Full MCTS
149
+
150
+
151
+ ```
152
+ Running 1.9.3 with
153
+ Using /home/tobi/.rvm/gems/ruby-1.9.3-p551
154
+ ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-linux]
155
+ Running your benchmark...
156
+ --------------------------------------------------------------------------------
157
+ Finished warm up for 9x9 10_000 iterations, running the real bechmarks now
158
+ Finished warm up for 13x13 2_000 iterations, running the real bechmarks now
159
+ Finished warm up for 19x19 1_000 iterations, running the real bechmarks now
160
+ Benchmarking finished, here are your reports...
161
+
162
+ Warm up results:
163
+ --------------------------------------------------------------------------------
164
+ 9x9 10_000 iterations 0.97 i/min 61.79 s (avg) (± 6.59%)
165
+ 13x13 2_000 iterations 2.1 i/min 28.6 s (avg) (± 0.92%)
166
+ 19x19 1_000 iterations 1.74 i/min 34.47 s (avg) (± 0.36%)
167
+
168
+ Runtime results:
169
+ --------------------------------------------------------------------------------
170
+ 9x9 10_000 iterations 0.91 i/min 66.29 s (avg) (± 1.85%)
171
+ 13x13 2_000 iterations 2.13 i/min 28.16 s (avg) (± 1.31%)
172
+ 19x19 1_000 iterations 1.61 i/min 37.26 s (avg) (± 2.23%)
173
+ --------------------------------------------------------------------------------
174
+
175
+
176
+ Running jruby with
177
+ Using /home/tobi/.rvm/gems/jruby-9.0.3.0
178
+ jruby 9.0.3.0 (2.2.2) 2015-10-21 633c9aa OpenJDK 64-Bit Server VM 25.45-b02 on 1.8.0_45-internal-b14 +jit [linux-amd64]
179
+ Running your benchmark...
180
+ --------------------------------------------------------------------------------
181
+ Finished warm up for 9x9 10_000 iterations, running the real bechmarks now
182
+ Finished warm up for 13x13 2_000 iterations, running the real bechmarks now
183
+ Finished warm up for 19x19 1_000 iterations, running the real bechmarks now
184
+ Benchmarking finished, here are your reports...
185
+
186
+ Warm up results:
187
+ --------------------------------------------------------------------------------
188
+ 9x9 10_000 iterations 1.84 i/min 32.63 s (avg) (± 5.13%)
189
+ 13x13 2_000 iterations 4.33 i/min 13.86 s (avg) (± 2.28%)
190
+ 19x19 1_000 iterations 3.62 i/min 16.56 s (avg) (± 5.43%)
191
+
192
+ Runtime results:
193
+ --------------------------------------------------------------------------------
194
+ 9x9 10_000 iterations 1.91 i/min 31.48 s (avg) (± 2.48%)
195
+ 13x13 2_000 iterations 4.33 i/min 13.86 s (avg) (± 4.27%)
196
+ 19x19 1_000 iterations 3.7 i/min 16.23 s (avg) (± 2.48%)
197
+ --------------------------------------------------------------------------------
198
+
199
+
200
+ Running rbx-2.5.8 with
201
+ Using /home/tobi/.rvm/gems/rbx-2.5.8
202
+ rubinius 2.5.8 (2.1.0 bef51ae3 2015-11-08 3.4.2 JI) [x86_64-linux-gnu]
203
+ Running your benchmark...
204
+ --------------------------------------------------------------------------------
205
+ Finished warm up for 9x9 10_000 iterations, running the real bechmarks now
206
+ Finished measuring the run time for 9x9 10_000 iterations
207
+ Finished warm up for 13x13 2_000 iterations, running the real bechmarks now
208
+ Finished measuring the run time for 13x13 2_000 iterations
209
+ Finished warm up for 19x19 1_000 iterations, running the real bechmarks now
210
+ Finished measuring the run time for 19x19 1_000 iterations
211
+ Benchmarking finished, here are your reports...
212
+
213
+ Warm up results:
214
+ --------------------------------------------------------------------------------
215
+ 9x9 10_000 iterations 1.0 i/min 59.76 s (avg) (± 5.83%)
216
+ 13x13 2_000 iterations 2.48 i/min 24.21 s (avg) (± 0.88%)
217
+ 19x19 1_000 iterations 2.12 i/min 28.27 s (avg) (± 1.55%)
218
+
219
+ Runtime results:
220
+ --------------------------------------------------------------------------------
221
+ 9x9 10_000 iterations 1.07 i/min 56.05 s (avg) (± 0.2%)
222
+ 13x13 2_000 iterations 2.48 i/min 24.21 s (avg) (± 0.8%)
223
+ 19x19 1_000 iterations 2.1 i/min 28.52 s (avg) (± 2.59%)
224
+ --------------------------------------------------------------------------------
225
+
226
+
227
+ Running jruby-9 with --server -Xcompile.invokedynamic=true -J-Xmx1500m
228
+ Using /home/tobi/.rvm/gems/jruby-9.0.3.0
229
+ jruby 9.0.3.0 (2.2.2) 2015-10-21 633c9aa OpenJDK 64-Bit Server VM 25.45-b02 on 1.8.0_45-internal-b14 +jit [linux-amd64]
230
+ Running your benchmark...
231
+ --------------------------------------------------------------------------------
232
+ Finished warm up for 9x9 10_000 iterations, running the real bechmarks now
233
+ Finished measuring the run time for 9x9 10_000 iterations
234
+ Finished warm up for 13x13 2_000 iterations, running the real bechmarks now
235
+ Finished measuring the run time for 13x13 2_000 iterations
236
+ Finished warm up for 19x19 1_000 iterations, running the real bechmarks now
237
+ Finished measuring the run time for 19x19 1_000 iterations
238
+ Benchmarking finished, here are your reports...
239
+
240
+ Warm up results:
241
+ --------------------------------------------------------------------------------
242
+ 9x9 10_000 iterations 3.53 i/min 17.02 s (avg) (± 15.86%)
243
+ 13x13 2_000 iterations 8.59 i/min 6.99 s (avg) (± 1.21%)
244
+ 19x19 1_000 iterations 6.96 i/min 8.62 s (avg) (± 1.65%)
245
+
246
+ Runtime results:
247
+ --------------------------------------------------------------------------------
248
+ 9x9 10_000 iterations 3.77 i/min 15.89 s (avg) (± 1.87%)
249
+ 13x13 2_000 iterations 8.52 i/min 7.04 s (avg) (± 3.46%)
250
+ 19x19 1_000 iterations 7.02 i/min 8.55 s (avg) (± 1.92%)
251
+ --------------------------------------------------------------------------------
252
+
253
+
254
+ Running jruby-1 with
255
+ Using /home/tobi/.rvm/gems/jruby-1.7.22
256
+ jruby 1.7.22 (1.9.3p551) 2015-08-20 c28f492 on OpenJDK 64-Bit Server VM 1.8.0_45-internal-b14 +jit [linux-amd64]
257
+ Running your benchmark...
258
+ --------------------------------------------------------------------------------
259
+ Finished warm up for 9x9 10_000 iterations, running the real bechmarks now
260
+ Finished measuring the run time for 9x9 10_000 iterations
261
+ Finished warm up for 13x13 2_000 iterations, running the real bechmarks now
262
+ Finished measuring the run time for 13x13 2_000 iterations
263
+ Finished warm up for 19x19 1_000 iterations, running the real bechmarks now
264
+ Finished measuring the run time for 19x19 1_000 iterations
265
+ Benchmarking finished, here are your reports...
266
+
267
+ Warm up results:
268
+ --------------------------------------------------------------------------------
269
+ 9x9 10_000 iterations 1.97 i/min 30.51 s (avg) (± 3.66%)
270
+ 13x13 2_000 iterations 4.55 i/min 13.18 s (avg) (± 3.45%)
271
+ 19x19 1_000 iterations 3.87 i/min 15.52 s (avg) (± 1.04%)
272
+
273
+ Runtime results:
274
+ --------------------------------------------------------------------------------
275
+ 9x9 10_000 iterations 2.05 i/min 29.32 s (avg) (± 1.21%)
276
+ 13x13 2_000 iterations 4.57 i/min 13.13 s (avg) (± 2.73%)
277
+ 19x19 1_000 iterations 3.94 i/min 15.23 s (avg) (± 1.61%)
278
+ --------------------------------------------------------------------------------
279
+
280
+
281
+ Running 2.2 with
282
+ Using /home/tobi/.rvm/gems/ruby-2.2.3
283
+ ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]
284
+ Running your benchmark...
285
+ --------------------------------------------------------------------------------
286
+ Finished warm up for 9x9 10_000 iterations, running the real bechmarks now
287
+ Finished measuring the run time for 9x9 10_000 iterations
288
+ Finished warm up for 13x13 2_000 iterations, running the real bechmarks now
289
+ Finished measuring the run time for 13x13 2_000 iterations
290
+ Finished warm up for 19x19 1_000 iterations, running the real bechmarks now
291
+ Finished measuring the run time for 19x19 1_000 iterations
292
+ Benchmarking finished, here are your reports...
293
+
294
+ Warm up results:
295
+ --------------------------------------------------------------------------------
296
+ 9x9 10_000 iterations 1.50 i/min 40.04 s (avg) (± 0.83%)
297
+ 13x13 2_000 iterations 3.35 i/min 17.90 s (avg) (± 1.65%)
298
+ 19x19 1_000 iterations 2.71 i/min 22.15 s (avg) (± 0.37%)
299
+
300
+ Runtime results:
301
+ --------------------------------------------------------------------------------
302
+ 9x9 10_000 iterations 1.47 i/min 40.68 s (avg) (± 2.28%)
303
+ 13x13 2_000 iterations 3.29 i/min 18.21 s (avg) (± 0.44%)
304
+ 19x19 1_000 iterations 2.72 i/min 22.09 s (avg) (± 1.05%)
305
+ --------------------------------------------------------------------------------
306
+
307
+
308
+ Running truffle graal with enough heap space
309
+ $ JAVACMD=../graalvm-jdk1.8.0/bin/java ../jruby/bin/jruby -X\+T -Xtruffle.core.load_path\=../jruby/truffle/src/main/ruby -r ./.jruby\+truffle_bundle/bundler/setup.rb -e puts\ RUBY_DESCRIPTION
310
+ jruby 9.0.4.0-SNAPSHOT (2.2.2) 2015-11-08 fd2c179 OpenJDK 64-Bit Server VM 25.40-b25-internal-graal-0.7 on 1.8.0-internal-b132 +jit [linux-amd64]
311
+ $ JAVACMD=../graalvm-jdk1.8.0/bin/java ../jruby/bin/jruby -X\+T -J-Xmx1500m -Xtruffle.core.load_path\=../jruby/truffle/src/main/ruby -r ./.jruby\+truffle_bundle/bundler/setup.rb benchmark/mcts_avg.rb
312
+ Running your benchmark...
313
+ --------------------------------------------------------------------------------
314
+ Finished warm up for 9x9 10_000 iterations, running the real bechmarks now
315
+ Finished measuring the run time for 9x9 10_000 iterations
316
+ Finished warm up for 13x13 2_000 iterations, running the real bechmarks now
317
+ Finished measuring the run time for 13x13 2_000 iterations
318
+ Finished warm up for 19x19 1_000 iterations, running the real bechmarks now
319
+ Finished measuring the run time for 19x19 1_000 iterations
320
+ Benchmarking finished, here are your reports...
321
+
322
+ Warm up results:
323
+ --------------------------------------------------------------------------------
324
+ 9x9 10_000 iterations 1.88 i/min 31.86 s (avg) (± 94.52%)
325
+ 13x13 2_000 iterations 3.96 i/min 15.14 s (avg) (± 159.39%)
326
+ 19x19 1_000 iterations 9.65 i/min 6.22 s (avg) (± 10.24%)
327
+
328
+ Runtime results:
329
+ --------------------------------------------------------------------------------
330
+ 9x9 10_000 iterations 5.04 i/min 11.90 s (avg) (± 7.95%)
331
+ 13x13 2_000 iterations 13.86 i/min 4.33 s (avg) (± 15.73%)
332
+ 19x19 1_000 iterations 9.49 i/min 6.32 s (avg) (± 8.33%)
333
+ --------------------------------------------------------------------------------
334
+ ```
335
+
336
+
337
+ ## 0.2 (Simplified board representation)
338
+
339
+ Notable is that these changes weren't done for performance reasons apparent in these benchmarks, as benchmark-ips does run GC so the lack of GC runs should not affect it. Maybe the benefit of creating less objects.
340
+
341
+ Some ruby versions showed no notable differences (rbx, jruby 9k) while others (CRuby, jruby 1.7) showed nice gains. On 19x19 CRuby 2.2.3 went 25 --> 34, jruby 1.7 went 43 --> 54.
342
+
343
+ ```
344
+ Running rbx with
345
+ Using /home/tobi/.rvm/gems/rbx-2.5.2
346
+ Calculating -------------------------------------
347
+ 9x9 full playout (+ score)
348
+ 7.000 i/100ms
349
+ 13x13 full playout (+ score)
350
+ 4.000 i/100ms
351
+ 19x19 full playout (+ score)
352
+ 1.000 i/100ms
353
+ -------------------------------------------------
354
+ 9x9 full playout (+ score)
355
+ 117.110 (± 7.7%) i/s - 2.331k
356
+ 13x13 full playout (+ score)
357
+ 53.714 (± 7.4%) i/s - 1.068k
358
+ 19x19 full playout (+ score)
359
+ 23.817 (±12.6%) i/s - 467.000
360
+ Running 1.9.3 with
361
+ Using /home/tobi/.rvm/gems/ruby-1.9.3-p551
362
+ Calculating -------------------------------------
363
+ 9x9 full playout (+ score)
364
+ 15.000 i/100ms
365
+ 13x13 full playout (+ score)
366
+ 6.000 i/100ms
367
+ 19x19 full playout (+ score)
368
+ 2.000 i/100ms
369
+ -------------------------------------------------
370
+ 9x9 full playout (+ score)
371
+ 149.826 (± 6.0%) i/s - 3.000k
372
+ 13x13 full playout (+ score)
373
+ 66.382 (± 9.0%) i/s - 1.320k
374
+ 19x19 full playout (+ score)
375
+ 28.114 (±10.7%) i/s - 554.000
376
+ Running jruby-dev-graal with -X+T -J-Xmx1500m
377
+ Using /home/tobi/.rvm/gems/jruby-dev-graal
378
+ Calculating -------------------------------------
379
+ 9x9 full playout (+ score)
380
+ 1.000 i/100ms
381
+ 13x13 full playout (+ score)
382
+ 1.000 i/100ms
383
+ 19x19 full playout (+ score)
384
+ 1.000 i/100ms
385
+ Calculating -------------------------------------
386
+ 9x9 full playout (+ score)
387
+ 9.828 (± 40.7%) i/s - 158.000
388
+ 13x13 full playout (+ score)
389
+ 4.046 (± 24.7%) i/s - 70.000
390
+ 19x19 full playout (+ score)
391
+ 5.289 (± 37.8%) i/s - 87.000
392
+ Running jruby with
393
+ Using /home/tobi/.rvm/gems/jruby-9.0.1.0
394
+ Calculating -------------------------------------
395
+ 9x9 full playout (+ score)
396
+ 11.000 i/100ms
397
+ 13x13 full playout (+ score)
398
+ 10.000 i/100ms
399
+ 19x19 full playout (+ score)
400
+ 4.000 i/100ms
401
+ -------------------------------------------------
402
+ 9x9 full playout (+ score)
403
+ 243.322 (± 7.8%) i/s - 4.829k
404
+ 13x13 full playout (+ score)
405
+ 105.500 (± 6.6%) i/s - 2.100k
406
+ 19x19 full playout (+ score)
407
+ 45.046 (± 8.9%) i/s - 896.000
408
+ Running jruby-1 with
409
+ Using /home/tobi/.rvm/gems/jruby-1.7.22
410
+ Calculating -------------------------------------
411
+ 9x9 full playout (+ score)
412
+ 14.000 i/100ms
413
+ 13x13 full playout (+ score)
414
+ 12.000 i/100ms
415
+ 19x19 full playout (+ score)
416
+ 5.000 i/100ms
417
+ -------------------------------------------------
418
+ 9x9 full playout (+ score)
419
+ 279.079 (±11.8%) i/s - 5.488k
420
+ 13x13 full playout (+ score)
421
+ 128.978 (± 7.0%) i/s - 2.568k
422
+ 19x19 full playout (+ score)
423
+ 54.526 (± 9.2%) i/s - 1.085k
424
+ Running 2.2 with
425
+ Using /home/tobi/.rvm/gems/ruby-2.2.3
426
+ Calculating -------------------------------------
427
+ 9x9 full playout (+ score)
428
+ 18.000 i/100ms
429
+ 13x13 full playout (+ score)
430
+ 8.000 i/100ms
431
+ 19x19 full playout (+ score)
432
+ 3.000 i/100ms
433
+ -------------------------------------------------
434
+ 9x9 full playout (+ score)
435
+ 183.983 (± 4.9%) i/s - 3.672k
436
+ 13x13 full playout (+ score)
437
+ 80.525 (± 6.2%) i/s - 1.608k
438
+ 19x19 full playout (+ score)
439
+ 34.117 (± 8.8%) i/s - 678.000
440
+ ```
441
+
442
+ ## 0.1 (first really naive implementation)
443
+
444
+ ```
445
+ Running rbx with
446
+ Using /home/tobi/.rvm/gems/rbx-2.5.2
447
+ Calculating -------------------------------------
448
+ 9x9 full playout (+ score)
449
+ 4.000 i/100ms
450
+ 13x13 full playout (+ score)
451
+ 3.000 i/100ms
452
+ 19x19 full playout (+ score)
453
+ 1.000 i/100ms
454
+ -------------------------------------------------
455
+ 9x9 full playout (+ score)
456
+ 112.237 (±11.6%) i/s - 2.212k
457
+ 13x13 full playout (+ score)
458
+ 52.475 (± 9.5%) i/s - 1.041k
459
+ 19x19 full playout (+ score)
460
+ 22.600 (±13.3%) i/s - 442.000
461
+ Running 1.9.3 with
462
+ Using /home/tobi/.rvm/gems/ruby-1.9.3-p551
463
+ Calculating -------------------------------------
464
+ 9x9 full playout (+ score)
465
+ 10.000 i/100ms
466
+ 13x13 full playout (+ score)
467
+ 4.000 i/100ms
468
+ 19x19 full playout (+ score)
469
+ 2.000 i/100ms
470
+ -------------------------------------------------
471
+ 9x9 full playout (+ score)
472
+ 111.529 (± 8.1%) i/s - 2.220k
473
+ 13x13 full playout (+ score)
474
+ 48.059 (±10.4%) i/s - 952.000
475
+ 19x19 full playout (+ score)
476
+ 19.788 (±15.2%) i/s - 390.000
477
+ Running jruby-dev-graal with -X+T -J-Xmx1500m
478
+ Using /home/tobi/.rvm/gems/jruby-dev-graal
479
+ Calculating -------------------------------------
480
+ 9x9 full playout (+ score)
481
+ 1.000 i/100ms
482
+ 13x13 full playout (+ score)
483
+ 1.000 i/100ms
484
+ 19x19 full playout (+ score)
485
+ 1.000 i/100ms
486
+ Calculating -------------------------------------
487
+ 9x9 full playout (+ score)
488
+ 5.787 (± 34.6%) i/s - 102.000
489
+ 13x13 full playout (+ score)
490
+ 3.598 (± 27.8%) i/s - 67.000
491
+ 19x19 full playout (+ score)
492
+ 1.849 (± 0.0%) i/s - 36.000
493
+ Running jruby with
494
+ Using /home/tobi/.rvm/gems/jruby-9.0.1.0
495
+ Calculating -------------------------------------
496
+ 9x9 full playout (+ score)
497
+ 9.000 i/100ms
498
+ 13x13 full playout (+ score)
499
+ 10.000 i/100ms
500
+ 19x19 full playout (+ score)
501
+ 4.000 i/100ms
502
+ -------------------------------------------------
503
+ 9x9 full playout (+ score)
504
+ 237.441 (±11.0%) i/s - 4.680k
505
+ 13x13 full playout (+ score)
506
+ 105.639 (± 9.5%) i/s - 2.090k
507
+ 19x19 full playout (+ score)
508
+ 44.741 (±11.2%) i/s - 884.000
509
+ Running jruby-1 with
510
+ Using /home/tobi/.rvm/gems/jruby-1.7.22
511
+ Calculating -------------------------------------
512
+ 9x9 full playout (+ score)
513
+ 11.000 i/100ms
514
+ 13x13 full playout (+ score)
515
+ 9.000 i/100ms
516
+ 19x19 full playout (+ score)
517
+ 4.000 i/100ms
518
+ -------------------------------------------------
519
+ 9x9 full playout (+ score)
520
+ 224.768 (±15.6%) i/s - 4.356k
521
+ 13x13 full playout (+ score)
522
+ 105.326 (± 7.6%) i/s - 2.097k
523
+ 19x19 full playout (+ score)
524
+ 43.576 (±11.5%) i/s - 864.000
525
+ Running 2.2 with
526
+ Using /home/tobi/.rvm/gems/ruby-2.2.3
527
+ Calculating -------------------------------------
528
+ 9x9 full playout (+ score)
529
+ 14.000 i/100ms
530
+ 13x13 full playout (+ score)
531
+ 6.000 i/100ms
532
+ 19x19 full playout (+ score)
533
+ 2.000 i/100ms
534
+ -------------------------------------------------
535
+ 9x9 full playout (+ score)
536
+ 139.838 (± 6.4%) i/s - 2.786k
537
+ 13x13 full playout (+ score)
538
+ 60.935 (± 8.2%) i/s - 1.212k
539
+ 19x19 full playout (+ score)
540
+ 25.423 (±11.8%) i/s - 502.000
541
+ ```