| Attribute-Profiled documentation | Contained in the Attribute-Profiled distribution. |
Attribute::Profiled - Profiles specific methods in class
package SomeClass;
use Attribute::Profiled;
sub long_running_method : Profiled { }
Attribute::Profiled provides a way to profile specific methods with attributes. This module uses Benchmark::Timer to profile elapsed times for your calls to the methods with Profiled attribute on.
Profiling report will be printed to STDERR at the end of program execution.
$Attribute::Profiled::_Profiler.Tatsuhiko Miyagawa <miyagawa@bulknews.net>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Attribute-Profiled documentation | Contained in the Attribute-Profiled distribution. |
package Attribute::Profiled; use 5.006; use strict; use warnings; our $VERSION = '0.03'; use Attribute::Handlers; use Hook::LexWrap; our $_Profiler; sub UNIVERSAL::Profiled : ATTR(CODE) { my($package, $symbol, $referent, $attr, $data, $phase) = @_; my $meth = *{$symbol}{NAME}; no warnings 'redefine'; wrap $symbol, pre => sub { unless ($_Profiler) { $_Profiler = Benchmark::Timer::ReportOnDestroy->new; } $_Profiler->start("$package\::$meth"); }, post => sub { $_Profiler->stop("$package\::$meth"); }; } package Benchmark::Timer::ReportOnDestroy; use base qw(Benchmark::Timer); sub DESTROY { my $self = shift; $self->report; } 1; __END__