Devel::EndStats - Display run time and dependencies after running code
This document describes version 0.15 of Devel::EndStats (from Perl distribution Devel-EndStats), released on 2014-08-21.
# from the command line % perl -MDevel::EndStats script.pl ##### sample output ##### <normal script output, if any...> # BEGIN stats from Devel::EndStats # Program runtime duration: 0.055s # Total number of required files loaded: 132 # Total number of required lines loaded: 48772 # END stats ##### sample output (with verbose=1, some cut) ##### <normal script output, if any...> # BEGIN stats from Devel::EndStats # Program runtime duration: 0.055s # Total number of required files loaded: 132 # Total number of required lines loaded: 48772 # # 1 1747 lines 0.023489s( 43%) Log/Any/App.pm (loaded by main) # # 52 1106 lines 0.015112s( 28%) Log/Log4perl/Logger.pm (loaded by Log::Log4perl) # # 17 190 lines 0.011983s( 22%) Log/Any/Adapter.pm (loaded by Log::Any::App) # # 18 152 lines 0.011679s( 21%) Log/Any/Manager.pm (loaded by Log::Any::Adapter) # # 5 981 lines 0.007299s( 13%) File/Path.pm (loaded by Log::Any::App) ... # END stats
Devel::EndStats runs in the END block, displaying various statistics about your program, such as:
how many seconds the program ran;
how many required files and total number of lines loaded (from %INC);
etc.
Some notes/caveats:
Devel::EndStats should be loaded before other modules, for example by running it on the command-line, as shown in the SYNOPSIS.
Some options are accepted. They can be passed via the use statement:
# from the command line % perl -MDevel::EndStats=verbose,1 script.pl # from script use Devel::EndStats verbose=>1;
or via the DEVELENDSTATS_OPTS environment variable:
% DEVELENDSTATS_OPTS='verbose=1' perl -MDevel::EndStats script.pl
verbose => BOOL (default: 0)
Can also be set via VERBOSE environment variable. If set to true, display more statistics (like per-module statistics).
sort => STR (default: '-time')
Set how to sort the list of loaded modules ('file' = by file, 'time' = by load time, 'caller' = by first caller's package, 'order' = by order of loading, 'lines' = by number of lines). Only relevant when 'verbose' is on.
force => BOOL (default: 0)
By default, if BEGIN phase did not succeed, stats will not be shown. This option forces displaying the stats.
hide_core => BOOL (default: 0)
Whether to hide core modules while listing modules in verbose mode.
verbose
hide_noncore => BOOL (default: 0)
Whether to hide non-core modules while listing modules in verbose mode.
show_memsize => BOOL (default: 0)
Whether to show memory usage information. Currently this is done by probing /proc/$$/statm because some other memory querying modules are unusable (e.g. Devel::SizeMe currently segfaults on my system, Devel::InterpreterSize is too heavy).
/proc/$$/statm
Devel::InterpreterSize
This module might be useful during development. I first wrote this module when trying to reduce startup overhead of a command line application, by looking at how many modules the app has loaded and try to avoid loading modules whenever it's unnecessary.
Sure, if it's useful. As they say, (comments|patches) are welcome.
There are many modules on CPAN that can be used to generate dependency information for your code. Neil Bowers has written a review that covers most of them.
* Timing and memory usage is inclusive instead of exclusive.
* Stat: system/user time.
* Stat: number of open files (sockets).
* Stat: number of child processes.
* Stat: number of actual code lines (vs blanks, data, comment, POD)
* Stat: number of XS vs PP modules.
* Feature: remember last run's stats, compare with current run.
Please visit the project's homepage at https://metacpan.org/release/Devel-EndStats.
Source repository is at https://github.com/sharyanto/perl-Devel-EndStats.
Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Devel-EndStats
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
Steven Haryanto <stevenharyanto@gmail.com>
This software is copyright (c) 2014 by Steven Haryanto.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Devel::EndStats, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Devel::EndStats
CPAN shell
perl -MCPAN -e shell install Devel::EndStats
For more information on module installation, please visit the detailed CPAN module installation guide.