1
package GenTest::Validator::ExecutionTimeComparator;
4
@ISA = qw(GenTest GenTest::Validator);
9
use GenTest::Constants;
10
use GenTest::Comparator;
12
use GenTest::Validator;
19
use constant MINIMUM_TIME_INTERVAL => 1; # seconds
20
use constant MINIMUM_RATIO => 2; # Minimum speed-up or slow-down required in order to report a query
23
my ($comparator, $executors, $results) = @_;
25
return STATUS_WONT_HANDLE if $#$results != 1;
27
my $time0 = $results->[0]->duration();
28
my $time1 = $results->[1]->duration();
29
my $query = $results->[0]->query();
31
return STATUS_WONT_HANDLE if $time0 == 0 || $time1 == 0;
32
return STATUS_WONT_HANDLE if $time0 < MINIMUM_TIME_INTERVAL && $time1 < MINIMUM_TIME_INTERVAL;
34
my $ratio = $time0 / $time1;
36
say("ratio = $ratio; time0 = $time0 sec; time1 = $time1 sec; query: $query") if $ratio >= MINIMUM_RATIO;
39
$execution_times[0]->{sprintf('%.1f', $time0)}++;
40
$execution_times[1]->{sprintf('%.1f', $time1)}++;
42
push @{$execution_ratios{sprintf('%.1f', $ratio)}}, $query;
48
say("Total queries: $total_queries");
49
print Dumper \@execution_times;
50
foreach my $ratio (sort keys %execution_ratios) {
51
print "ratio = $ratio; queries = ".scalar(@{$execution_ratios{$ratio}}).":\n";
53
($ratio <= (1 - (1 / MINIMUM_RATIO) ) ) ||
54
($ratio >= MINIMUM_RATIO)
56
foreach my $query (@{$execution_ratios{$ratio}}) {