#!/usr/bin/perl
if
(
@ARGV
&&
$ARGV
[0] =~ /^-v$/) {
shift
;
$VERBOSE
= 1;
}
my
(
$ub
,
$sb
) =
times
;
my
$count
= 20000;
my
$used_time
;
print
"Starting up with $count iterations\n"
if
$VERBOSE
;
COUNT:
{
my
(
$i
,
$x
,
$y
);
my
(
@a
);
$x
= 0;
$str
=
"xyzzy"
x 20;
for
(
$i
= 0;
$i
<
$count
;
$i
++) {
if
(
$str
=~ /\d+/) {
}
$x
= (
$x
+ 123) % 333;
@a
= (
$x
) x 10;
unshift
(
@a
,
$x
);
}
my
(
$ua
,
$sa
) =
times
;
$used_time
=
$ua
-
$ub
;
if
(
$used_time
< 16) {
if
(
$used_time
< 0.1) {
$count
*= 60;
}
elsif
(
$used_time
< 1) {
$count
*= 16;
}
else
{
my
$adjust
= 18 /
$used_time
;
$adjust
= 1.5
if
$adjust
< 1.5;
$count
=
int
(
$count
*
$adjust
);
}
print
"Too fast (${used_time}s), "
if
$VERBOSE
;
print
"increasing loop count to $count\n"
if
$VERBOSE
;
(
$ub
,
$sb
) =
times
;
redo
COUNT;
}
printf
"$count iterations consumed %.1f CPU seconds\n"
,
$used_time
if
$VERBOSE
;
$factor
=
int
(
$count
/
$used_time
);
}
print
"CPU SPEED FACTOR = "
if
$VERBOSE
;
print
"$factor\n"
;