1package Perf::Trace::Util;
2
3use 5.010000;
4use strict;
5use warnings;
6
7require Exporter;
8
9our @ISA = qw(Exporter);
10
11our %EXPORT_TAGS = ( 'all' => [ qw(
12) ] );
13
14our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
15
16our @EXPORT = qw(
17avg nsecs nsecs_secs nsecs_nsecs nsecs_usecs print_nsecs
18clear_term
19);
20
21our $VERSION = '0.01';
22
23sub avg
24{
25    my ($total, $n) = @_;
26
27    return $total / $n;
28}
29
30my $NSECS_PER_SEC    = 1000000000;
31
32sub nsecs
33{
34    my ($secs, $nsecs) = @_;
35
36    return $secs * $NSECS_PER_SEC + $nsecs;
37}
38
39sub nsecs_secs {
40    my ($nsecs) = @_;
41
42    return $nsecs / $NSECS_PER_SEC;
43}
44
45sub nsecs_nsecs {
46    my ($nsecs) = @_;
47
48    return $nsecs % $NSECS_PER_SEC;
49}
50
51sub nsecs_str {
52    my ($nsecs) = @_;
53
54    my $str = sprintf("%5u.%09u", nsecs_secs($nsecs), nsecs_nsecs($nsecs));
55
56    return $str;
57}
58
59sub clear_term
60{
61    print "\x1b[H\x1b[2J";
62}
63
641;
65__END__
66=head1 NAME
67
68Perf::Trace::Util - Perl extension for perf trace
69
70=head1 SYNOPSIS
71
72  use Perf::Trace::Util;
73
74=head1 SEE ALSO
75
76Perf (trace) documentation
77
78=head1 AUTHOR
79
80Tom Zanussi, E<lt>tzanussi@gmail.com<gt>
81
82=head1 COPYRIGHT AND LICENSE
83
84Copyright (C) 2009 by Tom Zanussi
85
86This library is free software; you can redistribute it and/or modify
87it under the same terms as Perl itself, either Perl version 5.10.0 or,
88at your option, any later version of Perl 5 you may have available.
89
90Alternatively, this software may be distributed under the terms of the
91GNU General Public License ("GPL") version 2 as published by the Free
92Software Foundation.
93
94=cut
95