@@ -41,6 +41,7 @@ my %COMPILERS = (
41
41
dir => ' BENCH' ,
42
42
f_run => [$VM {perl5 } ],
43
43
e_run => [$VM {perl5 }, qw( -E ) ],
44
+ show_ver => [$VM {perl5 }, qw( -E say+$] ) ],
44
45
},
45
46
{
46
47
name => ' p5.pl' ,
@@ -51,6 +52,7 @@ my %COMPILERS = (
51
52
dir => ' BENCH/../Perlito' ,
52
53
f_run => [$VM {perl5 }, qw( -Ilib5 perlito5.pl -Isrc5/lib ) ],
53
54
e_run => [$VM {perl5 }, qw( -Ilib5 perlito5.pl -Isrc5/lib -e ) ],
55
+ show_ver => [$VM {perl5 }, qw( -Ilib5 perlito5.pl --version ) ],
54
56
},
55
57
{
56
58
name => ' p5.js_node' ,
@@ -61,6 +63,7 @@ my %COMPILERS = (
61
63
dir => ' BENCH/../Perlito' ,
62
64
f_run => [$VM {node_js }, qw( perlito5.js -Isrc5/lib ) ],
63
65
e_run => [$VM {node_js }, qw( perlito5.js -Isrc5/lib -e ) ],
66
+ show_ver => [$VM {node_js }, qw( perlito5.js --version ) ],
64
67
},
65
68
{
66
69
name => ' p5.js_v8' ,
@@ -71,6 +74,7 @@ my %COMPILERS = (
71
74
dir => ' BENCH/../Perlito' ,
72
75
f_compile => [$VM {v8 }, qw( perlito5.js -- -Isrc5/lib -Cjs ) ],
73
76
e_compile => [$VM {v8 }, qw( perlito5.js -- -Isrc5/lib -Cjs -e ) ],
77
+ show_ver => [$VM {v8 }, qw( perlito5.js -- --version ) ],
74
78
f_run => [$VM {v8 }, qw( COMPILED -- ) ],
75
79
e_run => [$VM {v8 }, qw( COMPILED -- ) ],
76
80
},
@@ -85,6 +89,7 @@ my %COMPILERS = (
85
89
dir => ' BENCH/../rakudo' ,
86
90
f_run => [qw( install/bin/perl6 ) ],
87
91
e_run => [qw( install/bin/perl6 -e ) ],
92
+ show_ver => [qw( install/bin/perl6 --version ) ],
88
93
},
89
94
{
90
95
name => ' niecza' ,
@@ -95,6 +100,7 @@ my %COMPILERS = (
95
100
dir => ' BENCH/../niecza' ,
96
101
f_run => [$VM {mono }, qw( run/Niecza.exe ) ],
97
102
e_run => [$VM {mono }, qw( run/Niecza.exe -e ) ],
103
+ show_ver => [$VM {mono }, qw( run/Niecza.exe --version ) ],
98
104
},
99
105
{
100
106
name => ' p6.pl' ,
@@ -105,6 +111,7 @@ my %COMPILERS = (
105
111
dir => ' BENCH/../Perlito' ,
106
112
f_compile => [$VM {perl5 }, qw( -Ilib5 perlito6.pl -Cperl5 ) ],
107
113
e_compile => [$VM {perl5 }, qw( -Ilib5 perlito6.pl -Cperl5 -e ) ],
114
+ show_ver => [$VM {perl5 }, qw( -Ilib5 perlito6.pl --version ) ],
108
115
f_run => [$VM {perl5 }, qw( -Ilib5 COMPILED ) ],
109
116
e_run => [$VM {perl5 }, qw( -Ilib5 COMPILED ) ],
110
117
},
@@ -117,6 +124,7 @@ my %COMPILERS = (
117
124
dir => ' BENCH/../Perlito' ,
118
125
f_compile => [$VM {v8 }, qw( perlito6.js -- -Cjs ) ],
119
126
e_compile => [$VM {v8 }, qw( perlito6.js -- -Cjs -e ) ],
127
+ show_ver => [$VM {v8 }, qw( perlito6.js -- --version ) ],
120
128
f_run => [$VM {v8 }, qw( COMPILED -- ) ],
121
129
e_run => [$VM {v8 }, qw( COMPILED -- ) ],
122
130
},
@@ -131,6 +139,7 @@ my %COMPILERS = (
131
139
dir => ' BENCH/../nqp' ,
132
140
f_run => [qw( install/bin/nqp --vmlibs=math_ops ) ],
133
141
e_run => [qw( install/bin/nqp --vmlibs=math_ops -e ) ],
142
+ show_ver => [qw( install/bin/nqp --version ) ],
134
143
},
135
144
{
136
145
name => ' rakudo.nqp' ,
@@ -141,6 +150,7 @@ my %COMPILERS = (
141
150
dir => ' BENCH/../rakudo' ,
142
151
f_run => [qw( install/bin/perl6 ) ],
143
152
e_run => [qw( install/bin/perl6 -e ) ],
153
+ show_ver => [qw( install/bin/perl6 --version ) ],
144
154
},
145
155
{
146
156
name => ' niecza.nqp' ,
@@ -151,6 +161,7 @@ my %COMPILERS = (
151
161
dir => ' BENCH/../niecza' ,
152
162
f_run => [$VM {mono }, qw( run/Niecza.exe ) ],
153
163
e_run => [$VM {mono }, qw( run/Niecza.exe -e ) ],
164
+ show_ver => [$VM {mono }, qw( run/Niecza.exe --version ) ],
154
165
},
155
166
],
156
167
);
@@ -244,13 +255,11 @@ sub MAIN {
244
255
tests => \%TESTS ,
245
256
);
246
257
247
- my $bench_rev = ` git describe --always --dirty` ;
248
- chomp $bench_rev ;
249
- my %run = (
250
- start_time => time ,
251
- bench_rev => $bench_rev ,
252
- options => \%opt ,
253
- );
258
+ my %run = (
259
+ start_time => time ,
260
+ options => \%opt ,
261
+ versions => detect_versions(),
262
+ );
254
263
255
264
# Run tests
256
265
my (@results , $startup );
@@ -274,6 +283,34 @@ sub MAIN {
274
283
$formatter -> (\%config , \%run , \@results , $opt {style }, $out_fh );
275
284
}
276
285
286
+ sub detect_versions {
287
+ say " Detecting versions ..." ;
288
+
289
+ my %version ;
290
+ my $cwd = cwd;
291
+
292
+ for my $group (@GROUPS ) {
293
+ for my $compiler (@{$COMPILERS {$group }}) {
294
+ next unless $compiler -> {enabled };
295
+
296
+ my $dir = $compiler -> {dir } || ' BENCH' ;
297
+ my @cmd = @{$compiler -> {show_ver }};
298
+ s /\b BENCH\b / $FindBin::Bin / g for $dir , @cmd ;
299
+
300
+ chdir $dir ;
301
+ $version {$compiler -> {name }} = ` @cmd ` ;
302
+ }
303
+ }
304
+
305
+ chdir $FindBin::Bin ;
306
+ $version {bench } = ` git describe --always --dirty` ;
307
+
308
+ chomp for values %version ;
309
+
310
+ chdir $cwd ;
311
+ return \%version ;
312
+ }
313
+
277
314
sub run_tests {
278
315
my ($test_type , $tests , $results , $startup ) = @_ ;
279
316
@@ -487,7 +524,7 @@ sub summarize_results_text {
487
524
488
525
my $start = friendly_time($run -> {start_time });
489
526
my $ignore = $run -> {options }{' ignore-startup' } ? ' (ignoring startup time)' : ' ' ;
490
- my $output = " $CLEAR \n ==> perl6-bench rev $run ->{bench_rev } run at $start$ignore \n\n " ;
527
+ my $output = " $CLEAR \n ==> perl6-bench version $run ->{versions}{bench } run at $start$ignore \n\n " ;
491
528
492
529
$output .= join ($spacer => ' ' x $longest_test , @lang_titles ) . " \n " ;
493
530
$output .= sprintf " $format \n " , ' ' , @comp_names ;
@@ -579,7 +616,7 @@ sub summarize_results_html_snippet {
579
616
.bench_summary caption { font-style : italic ; }
580
617
.bench_summary td { padding-left : .4em ; padding-right : .4em ; }
581
618
.bench_summary th { padding-left : .4em ; padding-right : .4em ; }
582
- .bench_rev { font-family : monospace ; }
619
+ .bench_ver { font-family : monospace ; }
583
620
.bench_start_time { font-family : monospace ; }
584
621
.bench_language { text-align : center ; border-bottom : 1px solid #999 ; border-left : .4em solid #fff ; border-right : .4em solid #fff ; }
585
622
.bench_compiler { text-align : center ; padding-top : .1em ; }
611
648
612
649
my $ignore = $run- > {options }{'ignore-startup '} ? ' (ignoring startup time )' : '';
613
650
$html .= qq{<table class ="bench _summary " cellspacing ="0" cellpadding ="0">\n };
614
- $html .= qq{<caption >perl 6-bench rev <span class ="bench _ rev ">$run- >{bench _ rev }</span > run at <span class="bench_start_time"> } . friendly_time($run- > {start _time }) . qq{</span >$ignore </caption >\n };
651
+ $html .= qq{<caption >perl 6-bench version <span class ="bench _ ver ">$run- >{versions }{ bench }</span > run at <span class="bench_start_time"> } . friendly_time($run- > {start _time }) . qq{</span >$ignore </caption >\n };
615
652
$html .= "<tr > <th > </th > \n " . join('' => map qq{ <th class ="bench _language " colspan ="$lang _count {$_}"> $_</th > \n } => @langs ) . "</tr>\n";
616
653
$html .= "<tr > <th > </th > \n " . join('' => map qq{ <th class ="bench _compiler ">$_</th >\n } => @comp_names ) . "</tr>\n";
617
654
$html .= "<tr > <th > TEST</th > \n " . join('' => map qq{ <th class ="bench _vm ">$_</th >\n } => @vm_names ) . "</tr>\n";
0 commit comments