if DBICTest::RunMode->is_smoker;
}
-use Benchmark;
+# globalllock so that the test runs alone
use DBICTest ':GlobalLock';
+use Benchmark;
+
# This is a rather unusual test.
# It does not test any aspect of DBIx::Class, but instead tests the
# perl installation this is being run under to see if it is:-
# Perl Performance Issues on Red Hat Systems in
# L<DBIx::Class::Manual::Troubleshooting>
-plan tests => 3;
-
-ok( 1, 'Dummy - prevents next test timing out' );
-
# we do a benchmark test filling an array with blessed/overloaded references,
# against an array filled with array refs.
# On a sane system the ratio between these operation sets is 1 - 1.5,
# whereas a bugged system gives a ratio of around 8
-# we therefore consider there to be a problem if the ratio is >= 2
+# we therefore consider there to be a problem if the ratio is >= $fail_ratio
+my $fail_ratio = 3;
+
+ok( $fail_ratio, "Testing for a blessed overload slowdown >= ${fail_ratio}x" );
+
my $results = timethese(
- -1, # run for 1 CPU second each
+ -1, # run for 1 WALL second each
{
no_bless => sub {
my %h;
my $ratio = $results->{no_bless}->iters / $results->{bless_overload}->iters;
-ok( ( $ratio < 2 ), 'Overload/bless performance acceptable' )
+cmp_ok( $ratio, '<', $fail_ratio, 'Overload/bless performance acceptable' )
|| diag(
"\n",
"This perl has a substantial slow down when handling large numbers\n",
SKIP: {
skip "Not checking for bless handling as performance is OK", 1
- if ( $ratio < 2 );
+ if Test::Builder->new->is_passing;
{
package # don't want this in PAUSE
"file " . __FILE__ . "\n",
);
}
+
+done_testing;