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