NAME Devel::EndStats - Show various statistics at the end of program run VERSION version 0.10 SYNOPSIS # from the command line % perl -MDevel::EndStats script.pl ##### sample output ##### # 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) ##### # 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 DESCRIPTION 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. OPTIONS 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 Can also be set via VERBOSE environment variable. If set to true, display more statistics (like per-module statistics). Default is 0. * 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. FAQ What is the purpose of this module? 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. Can you add (so and so) information to the stats? Sure, if it's useful. As they say, (comments|patches) are welcome. SEE ALSO TODO * Exclusive instead of inclusive timing for each require. * Stat: memory usage. * 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. AUTHOR Steven Haryanto COPYRIGHT AND LICENSE This software is copyright (c) 2012 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.