NAME
Devel::ContinuousProfiler - Ultra cheap profiling for use in production
VERSION
version 0.07
SYNOPSIS
use Devel::ContinuousProfiler;
...
# Automatic, periodic printing of profiling stats:
DESCRIPTION
This module automatically takes periodic snapshots of the callstack and prints reports of the hottest code. The CPU cost of doing the profiling work is automatically guestimated to be about 1/1024th your total.
The report format:
=E<lt>pidE<gt>= E<lt>process nameE<gt> profiling stats.
=E<lt>pidE<gt>= E<lt>countE<gt> E<lt>frameE<gt>,E<lt>frameE<gt>,E<lt>frameE<gt>,...
=E<lt>pidE<gt>= E<lt>countE<gt> E<lt>frameE<gt>,E<lt>frameE<gt>,E<lt>frameE<gt>,...
=E<lt>pidE<gt>= E<lt>countE<gt> E<lt>frameE<gt>,E<lt>frameE<gt>,...
...
An example of some output gleaned from a very short script:
=14365= t/load.t profiling stats.
=14365= 1 Test::More::pass,Test::Builder::ok,Test::Builder::_unoverload_str,Test::Builder::_unoverload,Test::Builder::_try,(eval),Test::Builder::__ANON__,(eval),(eval),overload::BEGIN,Devel::ContinuousProfiler::take_snapshot,(eval)
CAVEATS
This module's public API is under active development and experimentation.
CPAN testers is showing segfaults. Not sure what's going on there yet.
INTERNAL API
I'm only mentioning these
- count_down
- is_inside_logger
- log_size
- take_snapshot
- report
- report_strings