Util.pm 1.5 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
package Perf::Trace::Util;

use 5.010000;
use strict;
use warnings;

require Exporter;

our @ISA = qw(Exporter);

our %EXPORT_TAGS = ( 'all' => [ qw(
) ] );

our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );

our @EXPORT = qw(
avg nsecs nsecs_secs nsecs_nsecs nsecs_usecs print_nsecs
18
clear_term
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
);

our $VERSION = '0.01';

sub avg
{
    my ($total, $n) = @_;

    return $total / $n;
}

my $NSECS_PER_SEC    = 1000000000;

sub nsecs
{
    my ($secs, $nsecs) = @_;

    return $secs * $NSECS_PER_SEC + $nsecs;
}

sub nsecs_secs {
    my ($nsecs) = @_;

    return $nsecs / $NSECS_PER_SEC;
}

sub nsecs_nsecs {
    my ($nsecs) = @_;

T
Tom Zanussi 已提交
48
    return $nsecs % $NSECS_PER_SEC;
49 50 51 52 53 54 55 56 57 58
}

sub nsecs_str {
    my ($nsecs) = @_;

    my $str = sprintf("%5u.%09u", nsecs_secs($nsecs), nsecs_nsecs($nsecs));

    return $str;
}

59 60 61 62 63
sub clear_term
{
    print "\x1b[H\x1b[2J";
}

64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
1;
__END__
=head1 NAME

Perf::Trace::Util - Perl extension for perf trace

=head1 SYNOPSIS

  use Perf::Trace::Util;

=head1 SEE ALSO

Perf (trace) documentation

=head1 AUTHOR

Tom Zanussi, E<lt>tzanussi@gmail.com<gt>

=head1 COPYRIGHT AND LICENSE

Copyright (C) 2009 by Tom Zanussi

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.10.0 or,
at your option, any later version of Perl 5 you may have available.

Alternatively, this software may be distributed under the terms of the
GNU General Public License ("GPL") version 2 as published by the Free
Software Foundation.

=cut