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