blob: e99973cc005454aacc2364084b8d7bb0a0bc63b9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#!/usr/bin/env perl
use strict;
use warnings;
use Time::HiRes qw(clock_gettime sleep CLOCK_MONOTONIC);
my ($rate, $gate, $label) = @ARGV;
die "usage: $0 <rate-hz> <gate-file> <label>\n"
unless defined $rate && defined $gate && defined $label
&& length $gate && length $label;
die "rate must be a positive number\n"
unless $rate =~ /\A(?:[0-9]+(?:\.[0-9]*)?|\.[0-9]+)\z/ && $rate > 0;
sleep 0.01 until -e $gate;
$| = 1;
my $period = 1 / $rate;
my $next = clock_gettime(CLOCK_MONOTONIC);
my $sequence = 0;
while (1) {
$sequence++;
printf "\rbench-output-%08d-%s", $sequence, $label;
$next += $period;
my $now = clock_gettime(CLOCK_MONOTONIC);
$next = $now + $period if $next < $now - $period;
my $remaining = $next - $now;
sleep $remaining if $remaining > 0;
}
|