[libdevel-nytprof-perl] branch master updated (a709b73 -> 29dcc9a)
gregor herrmann
gregoa at debian.org
Wed Aug 12 12:22:45 UTC 2015
This is an automated email from the git hooks/post-receive script.
gregoa pushed a change to branch master
in repository libdevel-nytprof-perl.
from a709b73 releasing package libdevel-nytprof-perl version 6.01+dfsg-1
new 5b7e738 Replace repacking framework with Files-Excluded in debian/copyright.
new 73ce589 Add debian/upstream/metadata
new 43155e4 Update debian/changelog
adds 35939b8 Initial directory structure.
adds 211a621 Initial check-in. Note that this code is completely decrecated and probably fairly broken! It is the oldest public release that I have, so I have uploaded it only as a benchmark of where the project started to measure how far it has come. Get the next svn version!
adds 34d8bb0 Version 1.11. Stable CPAN release. Contains all changes from 0.02 through 1.11
adds f937dac Added HACKING file and updated MANIFEST accordingly
adds 2d1289a Added links to svn repo @ google code Shortened platform support section in NYTProf.pm because its much better supported now. Incremented version number since this is not 1.11 anymore, its 1.12 devel trunk
adds f94a515 Added test15p/x/v for perl <5.8.0 only and limited test06 to perl > 5.8
adds d15def6 Added ModuleVersion.pm and changed everything to pull the distribution version from that module directly. This way the version numbers are all centralized (since they were so highly dependant on each other in the previous iteration)
adds d69ecad Fix MakeMaker LICENSE for old versions of MakeMaker.
adds 03a197c Attempted fix for RHEL platform where %f is handled differently (?)
adds 7eeb220 Simplify handling of option defaults. Fix 'Unable to access output directory' test to refer to $opt{out} not $opt{file}
adds 5bde678 Fix 'Unable to access output directory' test to refer to $opt{out} not $opt{file} Fix cell padding so lines with timings have the same hight as those without.
adds 30ea9dc Factor out 'profiler' dir name, and create dir if needed.
adds ebaeddc Make debug/trace output a runtime option. Call fflush() in unlock_file() even if FPURGE not defined. Use safemalloc() instead of malloc(). Don't croak on unknown fileid, warn and continue. Add enable_profile() and disable_profile() functions (mainly so enable_profile can be called as a PerlInitChildHandler in mod_perl)
adds 9dc4526 Add comment with $^P bit meanings. Add and document new trace option. Fix docs for usecputime.
adds 7746a1f Make hash functions work for binary data. Also makes them faster because lookups can check length before doing a string compare.
adds 9b37b48 Major update, including file format and data structure changes. The
adds 54958d5 Add context stack crawling to find line number of enclosing block and sub. Output file format changed. Adjust postprocessing in process(). Factor out common code in test.pl
adds 07c5999 Polish up context crawling code. Add reading of block data from profile data file.
adds 1fc5152 Fix some edge cases
adds c2be5a6 Fixed compile errors on 5.8.8 Fixed some scattered line formatting
adds 368ff97 Temp hack for Reader to enable access to fid_block_time and fid_sub_time data sets.
adds 9f283ee Add TODO notes to HACKING. Add copyright to README and fix script names.
adds 5216b7c Fix PL_curcop for perl5.8.6 Fix redo_op for perl5.10
adds 5e5cb2b Reverted Trunk to r13 because of too many major changes. Branched previous changes into sandbox at branches/tim.bunce
adds ede7480 SVN Keyword tests...
adds 4715598 SVN Keywords tests 2...
adds b94667b Added svn property Id to all these files
adds 18898d7 Fixed a bug in these scripts where the output directory was being checked for read access, not write access. narf!
adds 88e9def Changed "print OUT sprintf..." to less redundant "printf OUT ..."
adds 391f92c nytprofhtml - fixed module version variable Reader.pm - removed 'l' from '%0.0lf' format string. RHEL fix
adds 14987b0 Testing new svn alert list
adds 0539d5e svn alert email list test attempt
adds 735d939 Fix to fix getFileStats/get_file_stats and add -lib option. Patch from Chetan Sarva.
adds 311d60b Revert r91 (applied to wrong branch)
adds cac17d9 Failing to locate a source file after a best-effort attempt is no longer fatal (but will still whine)
adds 058b29f Updated changelog, Readme version and module version number
adds cd962e4 Temporary patch -- Pause uses MakeMaker to determine versioning, and won't evaluate the 'required' version number. (All files that use the XS need to include its specific package version)
adds 1e2e3f6 - Added $VERSION to each module because the PAUSE indexer doesn't actually evaluation that variable when using it for indexing - Tim added a newline to the "package DB" line in NYTProf.xs as a hack for the PAUSE indexer - Fixed missing file in 1.14 distro -- ModuleVersion.xs
adds 2832b4d Merged changes from the tim.bunce branch into the trunk. Removed references to old fprofcvs/html in test.pl Corrected nytprofcvs not having execute bit (?)
adds b419734 Added some svn:ignore to ./t directory. Added 'demo' script I used for a presentation (Now slightly out of date. I'll update them later.)
adds ce46daa Added gcc developer options to Makefile.PL (taken from the code I use in the DBI) Rewrote chunks of the main HACKING text.
adds 58e0cdf Fixed a bunch of compiler warnings (seen now due to extra compiler flags).
adds dd97854 Added file size and mtime data (currently just zero).
adds 40eed06 Implement normlization of eval sequence numbers. Fixed test.pl to unlink the .new file for tests that pass.
adds c46dfdd Add .rdt result files for fork test
adds 2298820 Replace all remaining .v tests with .rdt tests (as they're much easier to work with)
adds b040a5a Enable reporting code to be run under the debugger (perl -d) by only installing DB::DB sub when profiling, and only if use_db_sub mode is enabled. (So we might even be able to profile the debugger, though I've not tried :-)
adds 50d3f96 Change fid_filename array to always contain array refs, not just when the fid is an eval. Add into the array the fid, flags, size and mtime. Fix test.pl to unlink the csv before creating a new one so we get an obvious failure if no file is generated.
adds 09a9f0f Rename fid_filename to fid_fileinfo to reflect its ture nature. Fix some problems in ::Data after previous change.
adds 85d6377 In "$sub called:\n" show total count of calls: "$sub called $count times:" Remove distracting different-colored borders from colored table cells.
adds 3a11977 Add prereq modules. More notes into HACKING
adds 643e5e8 Enable recording of block & sub level profiling data by default.
adds facb758 Refactor env var handling in test.pl and make skipped tests more self explanatory.
adds ef2da83 Refactor to enable full sets of tests to be run multiple times with different option configurations. (Will be used to test use_db_sub but currently that's failing due to differences in fid_block_time and fid_sub_time results)
adds 40287dd Fix sub/block profiling for perl < 5.8.8 (mostly, still some issues)
adds 06bf3aa Pass --out directory option to csv and html generation. Delete all files in $outdir before running csv or html generation test. Added -open option as addition to -html to ease testing.
adds a1795f9 Yeah. block&sub level profiling now working for perl < 5.8.8 Enabled running all tests with and without use_db_sub.
adds 0eba4bd Add alternative callback mechanism for geberating report lines.
adds 37a6394 Reduce html report size by ~20%
adds 6ad8b0f Generate -line, -block, and -sub reports.
adds 350d435 Fix links in and between html reports broken by previous commit.
adds 1617e67 More random ideas dumped into HACKING for now.
adds 1ccc836 Reorg Makefile.PL to move the subs out of the initial code. Plus some minor changes.
adds ff77cb1 Refactored header searching code to make it easier to extend and maintain.
adds e2c2441 Recommend the more standard -Mblib approach over PERL5LIB=blib/lib:blib/arch. Fix a few stray remaining references to ./profiler directory. Only bail on Win32 when under automated testing, and be more inviting to potential porters as well.
adds 2e328e7 Put output from each test in a separate directory which makes later separate analysis easier.
adds 5675cff Record if called sub is XS.
adds 625ddb3 Start of great new feature: *inclusive* subroutine times. This bridges the last gap between sub-level and line-level profilers. (If this works out then Devel::NYTProf will be "Insanely Great" :-) Also fixes a memory leak in subroutine caller tracking.
adds 1bfbb43 More work towards sub call inclusive timing. Shares sub_callers_hv data structure: { subname => { "fid:line" => [ count, incl_time ] } } Renamed print_header to output_header to match other output_* functions.
adds cad9877 Refactor the elapsed time code into a common set of macros, include the overflow concept. Use the abstracted elapsed time code for measuring inclusive time in subs. Add require_pv("Time/HiRes.pm"); for non HAS_GETTIMEOFDAY case.
adds f81f201 Added new header prototype to the html output for the invidual files. The output seemed overly bland.
adds 7cf3301 Use CSS to create attractive header, avoiding need for static image.
adds dcd0af0 Added $0 to data file.
adds 7f72c0d Added "Per-line/block/sub", application name and date/time it was run into header, plus date/time the report was generated.
adds f9c4496 Rename sub_fid_lines to sub_subinfo to match fid_fileinfo and reflect its role as a home for per-sub data. Move is_xs indicator from sub_caller hack to sub_subinfo (start and end line defined but 0 == is_xs). Accumulate total inclusive time in sub into sub_subinfo (as well as per fid+line in sub_callers). Update tests to reflect changes, plus new application attribute from previous commit. Reduce formatting guesswork in profile dumper module. Normalize cumulative sub [...]
adds 31db998 Update demo script to run from top directory
adds 3a08600 Assorted fixes and polish following on from previous changes.
adds 7c3f67b Added formatting to the subroutine link table: 1. Lines will now print "#" for the "Lines" column if the sub is one line (was like "3-3") 2. Added formatting to the subroutine column to make it easier to scan for subroutines: a. sub's will now align along the last "::", i.e. all sub names will align down the center. b. packages are a lighter color, while subs are a darker color c. some link formatting. might want to remove the link ability from the package name [...]
adds ce4b4e4 Removed link from the package name in the subroutine dispatch table (didn't make sense). Fixed display bug where anonymous subroutines broke the subroutine alignment.
adds 79c0637 Accumulate sub call counts into subinfo data for direct access to totals. (I meant to do that when I did the same for incl_time.)
adds 2d120f2 Factor out normalization of float values into sub in ::Util. Sort sub table by incl_time then sub name. Rework determine_severity to not need column name and to work better in more situations. (The sub table looks broken to me after Adam's changes. May be a Safari issue. I'll look at that next, along with adding call count and incl_time to the table.)
adds 11804b4 Added call count and incl_time to sub table, removed line range. Sort table by incl_time then subname.
adds 67379e3 Added total inclusive time spent in each sub to prologue block for that sub. Added inclusive time spent *per-call-location* (currently 0 because it needs xs & test changes) Fixed whitespace-matching indentation of call epilogue block.
adds f540f71 Added incl_time to returned sub_caller data. So now you know how much time was spent inside a sub for each of the places that sub was called.
adds 7ca5067 Added more inclusive time data to html report. Fixed line_calls_for_file() to return data after recent data restructuring. (Really need tests for these ::Data methods.) Refined removal of filename embedded in anon sub names (and documented why it doesn't work at the moment).
adds ee41572 Added ability to switch between any profile modes from any profile page. Current modes are 'block', 'line', and 'sub', however these can change arbitrarily without requirement any code in nytprofhtml to change.
adds 007273b Remove margin from header, which makes it look much smarter. Apply header to index page. Move header code to a function.
adds 113862f Remove stray $DB::single=1;
adds 035b026 Put both header dates on right and right aligned them. Clarified some table headings and wording. Removed bottom stats table on index page and merged stats with main index table. Made table heading and data padding the same. Lightened the table header grey and it border slightly.
adds 98f71ea Added mechanism for reporter to fire callback per-level. Used that to generate an index page per level.
adds ded40ee Moved calculate_median_absolute_deviation into ::Utils.
adds e29c964 Simplified code using calculate_median_absolute_deviation.
adds fb3ffc6 Add severity colors to subroutine table. Yeah!
adds 98c9cc1 Simplfy level of detail button formatting and use it to replace the "per-$level" text.
adds 1501ea6 Abstracted the interface to shift->{profile_modes} and used that to simplify other code.
adds 60083a1 Addded level switching buttons to the index page
adds 7f92710 Cleanup from a few warnings from stricter C compilers.
adds c52d24a Core Perl change #4309 disabled OP_SETSTATE. Change #33072 removed the last remnants of it. Added defines to allow Perl to compile with or without it.
adds 8b902b7 Quiet MANIFEST warnings from "make distclean".
adds 06a5aa4 Removed old .v test related code. Added test for run_command being successful. Added subs option to disable collecting sub inclusive times. Regularized all options to use foo=atoi(value) format. Added t/test90-stress.p to hold nasty stress tests. Added a test to it for a problem I just discovered with Readonly module. Added t/test50-disable.rdt
adds c742901 test.pl: swapped backwards warning messages. NYTProf.xs: removed two warnings (one cast SV->AV*) another add 'l' to format arg. nytprofhtml: Added back to index links header for non-index pages. Links will return to the index page for the current profile mode.
adds 24a15f1 More notes for HACKING...
adds 47a1152 More cool ideas dumped into HACKING.
adds e1d28f1 Notes regarding AutoLoader.
adds f922659 CXt_LOOP was removed from bleadperl and replaced with four new defines. Updated start_cop_of_context() to deal with this change.
adds c7a55b8 Skip the AutoLoad tests on Perl 5.10 for now until I have a fix in place. While fixing that, add a test to include given/when and say just to make sure profiling for that is working OK.
adds 5c27abc Update the MANIFEST for the recently added files.
adds cb2b2fa Moved time spent and call count ahead of sub name to make them easier to read, and to be more consistent with the format used elsewhere
adds f3a2c96 Order list of calls made by a statement by incl_time spent first then subname.
adds 9074176 More notes for HACKING... one idea and one problem.
adds fcbaf38 Major update to Devel::NYTProf docs. Updated README, mostly to remove duplicated information.
adds 53e431b More ideas for HACKING
adds d41d5cc More notes for HACKING
adds 17c7d97 Added warning if any of PERL5DB PERL5OPT PERL_UNICODE PERLIO env vars are set
adds efab339 Change XS test from using inet_aton to pack_sockaddr_un to avoid network traffic and risk of long delays.
adds e405e08 Bless fid_fileinfo and sub_subinfo refs into classes. Add way for class to affect what gets dumped. Remove last vestige of allowfork. Refactor parts of strip_prefix_from_paths into some new subs.
adds 5edd02a Added mechanism to delete profile data for the internals of library files. So test14 should no longer fail due to differences between versions. Also expanded and started using the ::ProfFile and ::ProfSub classes.
adds 4286b5d Bumped version to 1.90 - will make developers release as 1.90_1 soon (Full release will be 2.00) Changed links from http://search.cpan.org/~akaplan/Devel-NYTProf for permalink http://search.cpan.org/dist/Devel-NYTProf/ Disable t/test90-stress.p for non-developers and added notes about likely cause.
adds 2ba5dcb Updated t/test90-stress.p and related notes.
adds 269a52c Added dist config to Makefile.PL so "make dist" does clean+distcheck+disttest+tardist Tidied some whitespace. (Adam's use of 2-column tabs regularly drives me crazy!) Uploaded this version to cpan as 1.90_1 (developer release, won't be indexed).
adds 4776051 Added start of opcode hooks to handle 'leave' type ops. (This mechanism should fix the problem where time spent in the remainder of a statement that called a sub gets allocated to the last statement executed in that sub. Will probably also be a key part in fixing the problem that in mod_perl the time spent waiting for the next request gets allocated to the last statement that handled the previous request.)
adds 7cd4719 Major new feature to address two significant problems:
adds b74f4de Normalize eval sequence numbers in sub names. (Something about the cpan testers config is causing an extra eval to happen, so some tests failed for cpan testers.)
adds c1b3107 Test change omitted from previous change.
adds b080a85 Fix test count
adds ca23c73 Switch back toa single index.html but with links to line + block + sub views of each file.
adds f03259d Added a footer (in grey with links) to html report pages. Moved a 'bug' relating to test failures on perl5.6.2 into README. Tweaked history/background docs and added them to nytprofhtml. Avoid a divide by zero errors if no files in report.
adds c3955e4 Shorten file paths on index page by removing @INC prefixes. Speed up reporting by adding caching to subs_defined_in_file. Tidy up the footer.
adds 5e3e25a Ensure sub_subinfo & sub_callers always present in profile, even if empty. Expand ::ProfSub class.
adds 1991d14 Switched over to using objects for sub_info.
adds 58b83d6 Updated docs for subs_defined_in_file(). Added 'Callers' summary info to subs table, but then disabled it as it's misleading till eval fids can be merged.
adds 1ad4f9a Enabled subs_defined_in_file to return subs defined in all files. Added table of top 15 subs to index page. Made get_alternation_regex() more flexible. Now only shows "Jump to file" pulldown if there are over 30 files. Added captions to tables.
adds 0a2ab38 Added generation of an index-subs.html page listing all subs. Added link to same on main index page.
adds 04203e8 Removed image files and related css.
adds 952b84d Expanded object model further. Fixed links to subs, including anon subs declared in evals.
adds 1c752ef Fix up some edge cases in the data methods.
adds cc3a21f Skip failing test on Cygwin. I'm guessing its due to not having an fpurge().
adds a6c2d5d Quiet the MANIFEST warnings.
adds aa5c264 Add const char * typemap to keep perl 5.6 happy http://www.nntp.perl.org/group/perl.cpan.testers/2008/07/msg1880267.html
adds 8d519d6 Having hundreds of sub names like "PPI::Node::__ANON__[(eval 286)[PPI/Node.pm:642]:4]" isn't very useful... So now we merge then into ...[(eval 0)... (Needs more work to do the right thing with sub_caller data.)
adds aa35d53 Merged sub_caller (sub-called-from-where) data when collapsing anon subs created within evals. Added LIMITATIONS note that subroutine exclusive time is not (currently) available. Change "Time" column to "Exclusive Time" for statement-timing based reports.
adds c44a563 The 'Jump to file' pulldown got broken somewhere along the line, so I've polished it up a little. Added another idea into HACKING. Added "Exclusive " to the Time column on the index page.
adds 42af2c3 Removed source_line_func as it was never used. Assorted minor optimizations in main ::Reader source-code-reading loop. Changed nytprofhtml to do html escaping itself instead of via $reporter->add_regexp. Also escapes & now. Added full path as a tooltip over filenames on index page.
adds 48fad35 Fixed html escaping typo from earlier commit. Added an optimization to subs_defined_in_file()
adds bacf46f Added start of constants Used it to flag lack of fpurge in test results I'm guess that that's the cause of this failure http://www.nntp.perl.org/group/perl.cpan.testers/2008/07/msg1881535.html
adds f712f30 Major update to Devel::NYTProf docs. Output style.css before report (for subtle reasons). Link to the latest sample report.
adds 34f482f Just a jiffy...
adds 88ccd69 Workaround for perl 5.6 (probably could do better) http://www.nntp.perl.org/group/perl.cpan.testers/2008/07/msg1886489.html
adds a375a02 Fixed fid redefinition warning to say something useful So hopefully we can work out what's really happening in http://www.nntp.perl.org/group/perl.cpan.testers/2008/07/msg1886274.html
adds 41f1aa7 After a fork the new (child) data file doesn't have any knowledge of what the statement profiler recorded so shouldn't have any knowledge of what the sub profiler recorded either. Issue a warning on fork() if there's no fpurge support.
adds e1f394c Bump version to 2.00. Yeah! Sync svn:keywords to be "Id Revision Date" for all. Fix up assorted pod issues and add some screenshot links.
adds 6cf169e More pod tweaks.
adds 33f038d Unified version numbers and added tests for them. (The PAUSE indexer complained about some modules.)
adds 7788746 Standardize to HAS_CLOCK_GETTIME.
adds cdb7f79 Add docs about effect of recursion on sub inclusive time.
adds 335e479 First pass at using clock_gettime() for profiling. Now Tim can refactor at will. :)
adds 354df00 Update test16.rdt for 0 ticks
adds 35c63d5 Add CLOCKS_PER_TICK define for the Time::HiRes case.
adds d037efc Use NV instead of double to be consistent and allow for perl's configured with NV as long double.
adds ed27292 Added note about how to support compression.
adds c3c9432 Convert Changes file to pod and add some details.
adds 172a80b Measure cumulative statement timing overhead. Deduct same from inclusive subroutine times.
adds c57ff20 Thanks Steve in the Changes file for clock_gettime Remove subroutine inclusive timing overhead compensation from HACKING as it's been implemented now. Added better explanation of how to calculate exclusive sub times to HACKING. Added note about benefit of two level caller tracking to HACKING.
adds 6ad12ff Added another sub calling test case.
adds 4b8992e Added test for goto &$sub (which don't do the right thing at the moment). Added note to LIMITATIONS section about it and some notes into HACKING about how to fix it.
adds 115b624 First steps in getting NYTProf to compile on Win32. Not there yet, but a few hurdles have been jumped. Also, a doc nit fixed in D::NYTP::A.
adds cc9b849 Fixed overhead statement overhead adjustment for inclusive subroutine time. Added calculation of *exclusive* subroutine time using similar technique (not yet stored or reported).
adds 5ecac3c Store sub exclusive times in profiler data structure.
adds c12d3f5 Fixed calculate_median_absolute_deviation to use the *median* of the distance from the median value and not the average of the distance from the median value. This fixes cases where some columns were all green, for example. Added fmt_incl_excl_time function to format inclusive and exclusive times in a useful way.
adds df69f30 Added subroutine *exclusive* timing. Yeah! Sort subs in reports by exclusive time not inclusive time. Ignore zeros when calling calculate_median_absolute_deviation. Added start of support for user and sys cpu timing for subroutines (mainly to avoid having to change the file format for that in future) Incremented minor version number of file format.
adds 95c693c Added demo/exclusive-sub-time.pl Tweaked fmt_incl_excl_time
adds 15d0261 Improved readability of subroutine caller lists by getting the caller counts to line up, which will typically make the timings line up as well.
adds 36c1acc Added note about 'Calls made via operator overloading' to LIMITATIONS Removed note about 'Subroutine exclusive time is not available' now that it is. Added a fib() to demo/demo-code.pl to explore recursion issues Gave Windows users some hope.
adds f234ed1 Replaced use of fpurge() with a more portable approach so cygwin, irix and other systems without fpurge will be happier.
adds 9105162 Added more references for clock_gettime() Added suggestion that builtins could be treated as calls to CORE::* subs. Added suggestion to use CLOCK_PROF for (higher-resolution?) cpu time measurement.
adds 27afe76 These changes get Devel::NYTProf to compile on Win32 with Visual C++. I haven't been unable to test because Win32 seems to be placing the DLL in the wrong directory. I'll have to figure out what MakeMaker is doing.
adds 3e72c24 Fixed sub name resolution to work in more, perhaps all, unusual cases. Hopefully this'll fix http://rt.cpan.org/Ticket/Display.html?id=37841
adds 4c66c5d Added some thoughts on xsubs to HACKING
adds 65094d7 Added options to test.pl to control/limit testing of option combinations.
adds 85ff6a4 Added recording of xsub filenames (i.e. DBI.c)
adds b69d415 Fix up problems from earlier xs subname changes.
adds 2b18cc3 Fixed calculate_median_absolute_deviation detection of no data. Fixed subroutine table to base excl time colors on excl time data! Add "(xsub)" to xsubs and don't show pointless links to nowhere for xsubs
adds cd5d2d5 Tidied up file not found warnings.
adds 8e8ae59 Add number of distinct places and fistinct files subs are called from.
adds 713dfd7 Refactor towards adding 'relevant files' table to the top of individual file reports
adds f04ed5d Update VERSIONs Fixed a:hover to work for a:visited links
adds 657d840 Update test16 results (for perl5.10)
adds 79403e3 Prep 2.02 release
adds 01b6d23 Added support for .pmc files (for Larry's work on perl6 compiler)
adds 6499b47 Fix for threaded perls
adds f0a6a7f Improved formating of stats for subs called by a statement; Show sub line range info at trace level 2.
adds b193a37 Run perltidy on the perl source code.
adds 14ec7d5 Add .indent.pro file (though I'vw not applied indent to the .xs file as it has problems) Minor layout changes to some .pm files.
adds 0641acc Update HACKING file to remove done items and clarify others.
adds 58ab72a Use fwrite in preference to fputc loop, thanks to Nicholas Clark.
adds ddffa6e Minor updates to the docs
adds d6da440 Only show "For more information ... full list of %d subroutines" if not all shown.
adds fe47770 Fixed (long-standing) bug in Reader where it wasn't accounting for time spent executing code compiled in string evals.
adds 685b9a4 Various improvements to tracing.
adds e9c1496 Tidy the NYTProf.xs file (4 space indent with expandtab)
adds 336ca7c Added NYTP_TAG_* macros for items in the data file. Added output_str and read_str functions that are newline-safe and binary-safe (not used yet)
adds 5389e61 Implement read_nv via fread thanks to Nicholas Clark. Remove tabs from XS portion of .xs file.
adds f1b1176 Tweak comments.
adds c5ff791 Added use of newline-safe string i/o (is also null-safe but the reader code isn't) [Nick's patch overlapped with my work. I carried on with mine as his patch was missing. His has utf8 support which I'll add in later. It's probably better in other ways which I'll gleefully steal.] Added size of NV as atribute in data file - aborts if different.
adds 9eecc84 Warn about #line directives
adds 205a6cf Polish up #line changes.
adds ef03366 Added initial support for utf8 strings in data file, using negative length as indicator, which perl 5.8.0+ does for hash keys. Thanks to Nicholas Clark for the tip. Reuse an sv for sub_info and sub_caller sub name to avoid new/free for each.
adds 7d60c60 Added fid flags to indicate if fid first seen via sub or stmt profiler. (Potentially useful for diagnosing problems.) Added more detail to some trace messages. Reduced scope of some variable in the loader.
adds 8423006 Fixed some compiler warnings. Updated t/test16 to sync with recent changes Deleted t/test15 as we don't support perl 5.6 any more.
adds 5a2d45a Replace begin=1 option with start=begin|init|end|no. start=begin - start immediately start=init - start at begining of INIT phase (after compilation) start=end - start at begining of END phase start=no - don't automatically start Currently start=init is the default, but that's likely to change in future. The start=no option is handy if you want to explicitly control profiling by calling DB::enable_profile() and DB::disable_profile() yourself.
adds aaa33b4 Added SELECTIVE PROFILING section to docs. Added note to HACKING.
adds 635ba76 Perl 5.8.1 is now the oldest perl version supported.
adds b744963 More ideas for HACKING.
adds 01fd36d When reporting a token error in a profile file, also give the file offset, as this makes it easier to locate the problem.
adds 765609d Added early detection of possibly corrupt filenames.
adds f45f9ae Added all_subinfos method to ::Data class. Added line_time_data and excl_time methods to ::ProfFile class.
adds 636a538 Parse @ARGV to see if PERL_CORE=1 is there, which allows Devel::NYTProf to be build in-place in the core, which in turn allows certain core scripts to be benchmarked.
adds 0c90fe7 Only warn about #line directives once per process. Added $ENV{NYTPROF_EXIT_AFTER_LOAD} hack for testing/debugging
adds 38d4ea0 Added addpid=1 option to NYTPROF env var to append pid to data file name. (Handy for "NYTPROF=addpid=1 make test" which will now generate lots of files instead of continually overwriting the same one.) Silenced a couple of compiler warnings.
adds 12d638c Added created_via value to 'strange characters' warning. Fixed sub profiler to pay more attention to profile_subs flag.
adds ad4d30d Silence a couple of warnings in the XS.
adds 7b106b0 Replace use of fputc() with fwrite() in output_int()
adds 300826c Rename output_int() to output_tag_int(), optionally outputing the one byte tag ahead of the integer. Add a special tag NYTP_TAG_NO_TAG to supress the tag, and a compatibility wrapper macro output_int().
adds 757f63c Replace all fpuc(tag), output_int() combinations with a single call to output_tag_int().
adds ce7434f Replace most uses of fgetc() in read_int() with a single fread().
adds e612a27 Make every internal C function static (and one variable that I spotted).
adds b4dc464 Eliminate (well, paper over) two compiler warnings about unused variables. (But they are part of the XS API, so it's hard to see a way to avoid this)
adds a016edd Use a typedef for PL_ppaddr_orig so that we can case the value assigned to it, and hence elimiante the final compiler warning.
adds 47020da Make start=begin the default. (Also makes programs using Moose profile sanely.)
adds 416f65f Update HACKING to reflect progress.
adds 7a06f0a c cannot be anything other than EOF here, as there's no other way out of the while loop.
adds 340f165 Bumped version to 2.03 Updated Changes, including notes about known issues. Moved demo output to separate dir and delete it on make clean.
adds aa60bd6 If the expected test data file is missing (and hence undefined) for any reason, fail the tests explicitly with diagnostics (and keep going), rather than die-ing in some auxillary subroutine where the full information is not available.
adds c30b463 Reverse r407. For some reason "works on my machine" doesn't hold for all "my" machines. No idea why it only works in one particular checkout of mine.
adds edbf594 Wrap all FILE * output functions in NYT_* functions, and the FILE *out in a NYT_file structure. This will let us automatically swap to decompression when a profile stream tags that it is swapping to compressed data.
adds 029413e Wrap all FILE * input functions in NYT_* functions, and the FILE *in in NYT_file structure, analagous to the previous change for output. Together these will let us automatically swap to decompression when a profile stream tags that it is swapping to compressed data.
adds d692ab5 Add a tag for "starting deflated data stream". Add a state flag to the NYTP file structure to note the input/output mode. Add a function to start deflation, but for now don't actually do anything else. Add code to all the IO wrapper functions (other than read/write/tell/close) that croaks unless the file is in stdio mode.
adds dafde42 Correct the bad prefix on my names -- s/NYT_/NYTP_/g
adds 9e669a8 Add NYTP_start_inflate() which is called when we get the tag NYTP_TAG_START_DEFLATE
adds 7f76f1c Fix a typo in printf's name.
adds 7f4c400 Make NYTP_write() and NYTP_read() validate that the file state is either STDIO or the appropriate DEFLATE or INFLATE.
adds 96fa4f6 Rename parameters to file functions to ifile/ofile from in/out as it's bad to shadow global variables, and bugs hid that way. (Plus correct two of them.)
adds a881597 "deflate" the stream (by copying it via a buffer, and for now a deliberately short buffer to test the overflow code).
adds 59d4191 "inflate" via a copy loop NYTP_read().
adds 0e00a08 And now invert the bits of everything we read and write.
adds 1b29fb8 Modify the write code to write to a buffer, and only flush the buffer contents onwards (currently to disk) when the buffer is full, or the file is closed (except when discarding the FILE * on fork())
adds 79f73cc Remove my debugging fprintf()s that weren't supposed to be there.
adds 63e85f6 In struct NYTP_file_t, rename 'used' to 'count'
adds cd9fa62 Move the reading code into grab_input(), refilling the buffer as required.
adds 3a15eb3 Fix the bug in NYTP_fstrerror
adds 7e46de8 In struct NYTP_file_t, rename buffer to small_buffer, as we will need two buffers.
adds dd97de4 Add a large_buffer (which will become the buffer for the uncompressed data) and copy everything in from small to large, and everything out from large to small.
adds 83732b8 Eliminate NYTP_FILE_BUFFER_SIZE.
adds 8629512 Remove a duplicated initialisation.
adds a4faa81 Include <zlib.h>. Link with -lz. Add a z_stream structure into NYTP_file. Call deflateInit2() and deflateEnd() in the right places. Add a flush type parameter to flush_output, and note the type of flush in the 3 places where it is called (including adding it to NYTP_flush). Report the zlib error string in NYTP_fstrerror().
adds 9b88468 Deflate the output stream, inflate the input stream. All tests pass. (Finally) Space improvement seems to be between a factor of 4 and a factor of 7.
adds 2be2fd3 Refactor the library detection code in Makefile.PL to be more generic. Detect zlib.h in Makefile.PL, and if it is found signal this to the XS with -DHAS_ZLIB.
adds 3053176 Add a static variable compression_level, and use this to determine the compression level passed to deflate. This allows us to add an option to change it. The current default is Z_BEST_COMPRESSION. (This one goes up to 9.)
adds 5c49ebc Add a comment noting that the file is compressed, recording the compression level and the version of zlib used.
adds 870c268 In NYTP_tell(), for compressed files, instead of using the stdio file offset, which will be plain wrong due to buffering, give the position in the compressed stream. Add a function NYTP_type_of_offset(), which gives an appropriate string for croak() messages to describe what type of string it is.
adds 9a48f15 Up the input and output buffer sizes to something sensible, now that we've demonstrated that the buffer refile routines work well.
adds bba837e Remove an extraneous -lz
adds be862cb Replace file->state with a macro FILE_STATE(file), which can be conditionally compiled to just NYTP_FILE_STDIO when HAS_ZLIB is not true, which will allow the C compiler's optimiser to remove a lot code that is unreacheached in that configuration.
adds ed17ace Correctly wrap compression specific code in HAS_ZLIB so that it will compile (and pass tests) without <zlib.h>
adds c19bef7 Correct Perl_form() to Perl_form_nocontext(). That part of the code isn't covered by tests, and short of corrupting the internal state isn't ever going to be. It makes it arguable as to whether including debugging/diagnostic code that may itself be buggy or giving out misinformation is actually worth it.
adds 8a10247 Change the return type for grab_input() and flush_output() to void, as by now they have changed so that they don't signal failure by return value, and were always returning 1.
adds 3399c0e Update the paragraph on compression.
adds a15a96b RTFM reveals that the LIBS paramter to ExtUtils::MakeMaker is a list of *alternative* library specifications. So if we find more than one library we need to put out list of -lfoo directives in one string as the first member. Otherwise the first library is "found", and that "alternative" taken, causing us not to be linked with the second library.
adds 40a6c36 Cope with the fact that on some versions of perl, strerror() is redefined with a macro that takes a my_perl.
adds 6cf0d3a Note the possibility of using pthread_atfork() to detect forks.
adds de8db60 Add comments after the compressed stream, noting the totals for uncompressed and compressed bytes, and the compression ratio.
adds 5cc546e Calculate the available output using two pointers, rather than relying on avail_out. This lets us tweak the amount of available buffer we tell zlib about.
adds cbb998f After a flush, reduce the available output buffer such that after the next (full) write the underlying stdio stream pointer will have a file offset that is a multiple of the buffer size. In turn, the buffer size is a power of 2 (currently 4096), so it should be easier for the C library to copy, or maybe even feed direct to the OS write().
adds 8a9780a struct NYTP_file's end, which is only used for input, can be eliminated, and its use replaced with zs.next_out.
adds 34c382e For output, replace use count in NYTP_file with zs.avail_in, as the later is always assigned set from the former at the start of compression, and the two hold the same thing - the number of bytes ready to be compressed. It might be possible to eliminate count for input, but that would mean overloading one of the members of struct z_stream (probably avail_in), which feels wrong.
adds eeaa3e7 In struct NYTP_file, shrink state from int to unsigned char, and stdio_at_eof and zlib_at_eof to bool. (Plus change values assigned to them from 0 and 1 to FALSE and TRUE.)
adds 12ba15b Avoid divide-by-zero error in reporting code reported in http://rt.cpan.org/Ticket/Display.html?id=38706
adds 2f68696 Make the decision to use %e format based on the precision passed in, rather than the default precision of 5. For %e format, chose a precision that gives the same length string as the %f format, which for the default precision of 5 gives 2 significant figures, rather than 1, which is more useful for figuring out the effects of changes to fast but frequently used code.
adds c6ae2dd Use e notation for values under 0.0001, to give at least 2 digits of precision. As our exponents will always be e-05 to e-09, never e-10 or smaller, remove the leading zero to make these small numbers stand out less on the table.
adds fc943de Disable output file compression if compression_level is zero. We don't yet have an option to set this from Perl space.
adds 0cedcaf Give more detailed message for errors when reading a file
adds f032add Add universal error checking for NYTP_read and NYTP_write.
adds 9d55182 Add dTHX for previous commit
adds 3726921 If inflate fails, report the position in the input stream. If we're at EOF, suggest checking whether the input file is truncated.
adds 2152faf Add an option compress that specifies the compression level (with 0 disabling it). Documented, but no regression tests. (Because I can't see a good way to fit them into the existing harness. Best way to test is probably file size, and the diagnostic comments that the compressor adds to the stream)
adds 62d7822 Make timing tests more generous for slow systems http://www.nntp.perl.org/group/perl.cpan.testers/2008/08/msg2032367.html http://www.nntp.perl.org/group/perl.cpan.testers/2008/08/msg2070575.html
adds 1b5ade5 perltidy test.pl
adds 3991616 In set_option(), replace linear copy/paste strEQ() && atoi() for integer options with an array of name/value pairs, and a loop to locate name and set the option. For me this reduces the object code size by 1%, and makes it cleaner to add more options in future.
adds f304901 Added xsfile=0 option as workaround for perl5.8.8 CvFILE bug. Silenced warning about printf arg type (%ld vs off_t from ftell()) Added note on compression feature to Changes file.
adds 0d30d64 Fixed indentation in Changes file and adjusted vim settings.
adds c17dcf7 Change default compression level to 6. Add estimate of compression effect to Changes file.
adds a504b47 Added test for $! (not) being changed by NYTProf.
adds 5f96e3d Fix Devel/NYTProf/Apache.pm to handle NYTPROF=no and NYTPROF=end (https://rt.cpan.org/Ticket/Display.html?id=39129)
adds 430f888 Fix reading of zero-length string (probably, no test case).
adds 3159494 Avoid false warnings about #line directives that perl would ignore itself. RT#39411
adds a1c3545 Improve the comments in test13.p
adds f9eabbb Clarify comments in t/test13.p (missing from previous commit)
adds cdf6035 Clarify control flow in NYTP_read_unchecked slightly.
adds a47f044 No longer warn about '/loader/0x800d8c/...' synthetic file names perl assigns reading code from a CODE ref in @INC. (reported by Shawn M Moore)
adds 714d422 When normalizing, strip prefix from start of string and also when embeded e.g., "(eval 42)[/foo/bar/...]" (no safe test case)
adds 04b14ff Save the source code of string evals! (The reader just ignores them for now.) Adjusted the trace levels of some log messages.
adds 998b274 Added extra table of all subs sorted by inclusive time.
adds a6f6b92 Add copy of jQuery and jQuery tablesorter to output report. (Not used yet, that'll follow, sometime...)
adds 05189cd Silence assorted compiler warnings reported by Richard Foley.
adds 7d3a357 One more compiler warning silenced thanks to Richard Foley.
adds 43650ae Use an empty string as the filename for xsubs because CvFILE() isn't reliable on perl 5.8.[78] and the name of the .c file isn't very useful anyway. So we no longer get fids for .c files and the sub_subinfo fid is undef for xsubs - which is reasonable. The reader can try to associate the xsubs with the corresonding .pm file using the package part of the subname.
adds 70e0433 Remove the xsfile option as it's no longer needed.
adds c97159a Prep version 2.04 release.
adds 5fa74a2 Prep for 2.04 release.
adds 8c4d7be Fixed alteration of $! during profiling thanks to Slaven Rezic. Also http://rt.cpan.org/Ticket/Display.html?id=39773 contained enough info to enable me to create a test case.
adds 174e754 Add the noreturn attribute to compressed_io_croak().
adds a8d2099 Tweak reader to store fid src lines in profile data structure thanks to Shawn Moore. Plus a quick hack from me to keep the tests passing for now.
adds 217189e Added some docs to Devel::NYTProf::Apache
adds cad8e3b more notes on profiling httpd
adds 0754781 Fix title of Changes pod, so hopefully search.cpan.org will present it better
adds 2773d9e Initial stab at supporting multiple clocks and falling back to CLOCK_REALTIME if the selected clock doesn't work.
adds 7398163 Add docs for new clock=N option.
adds eecf9ae Add clock_id to attributes in data file. Updated Changes. (This work is complete now.)
adds 749e13d Add more detail into trace when reading subroutine timings.
adds 4eb8574 Fixed error when application ended after DB::disable_profile. (Nick, the underlying issue is that flush_output() fails with a buffer error if called twice in succession. The fix I've applied just avoids that happening but doesn't address the underlying problem with flush_output))
adds 3be54dc Doc tweaks
adds 2400def Prep for 2.05 release
adds d869d2a Update a test for the clock_id change (only run for perl5.10)
adds 2b34539 Changed subroutine inclusive time to not count time spent recursed into the same subroutine.
adds 65bad04 Fix grammar error.
adds 7e147f5 Removed use of vfscanf() to improve portability, thanks to Jan Dubois.
adds e13ac2f Remove sanity check for OutCopFILE/CvFILE corruption as it's no longer needed. Assorted updates to HACKING.
adds 7e8f42f XS subs are now automatically associated with a source file that defines non-xsubs in the same package as the xsub. Not yet doing anything useful on the reporting side. Fixed inclusive time measurement for xsubs. Reworked t/test60-subname to use a locally defined xsub. Global subroutine index pages no longer list subs that were never called.
adds 8de0c0d Remove stray line that got left in earlier commit.
adds f9d7eb5 Add a couple of values to the sub_info dump in preparation for adding recirsion depth and recursion inclusive time.
adds 8c45a2c Defined macros for sub call array indices, and cleaned up related code. Now keeps separate inclusive time accumulator for recursion and also keeps track of max recursion depth.
adds 5ac4401 Add reci_time and rec_depth to sub_caller info. Add "max recursion depth %d" (if > 0) to summary of calls made on a line.
adds a5def5c Patch from Jan Dubois to port to windows. Yeah!
adds a7d7317 When normalizing, replace abs path prefix with /.../ so we can tell that it did have an abs path prefix and wasn't relative to start with. Adjust tests to match.
adds 15dd796 Make errno test independent of external modules (which might have changed $!)
adds 2431733 Update t/test16.rdt results missed from earlier commit. Remove reference to test15, which no longer exists. Remove reference to test06 from SKIP_TESTS as perl5.8 is now min version supported.
adds 1f33c61 Assorted changes from code review by Jan. Safefree(file);
adds abb01b6 Fix "No file line range data for sub 'package::__ANON__[:703]'" warnings
adds 8884a88 No longer ignore files that don't have any perl statements profiled but do have profiled xsubs. Fixes warnings about XSLoader.pm, for example. Href for xsubs uses name of xsub as anchor (not used yet).
adds c290b07 Callers and timing information for xsubs are now shown at the bottom of the corresponding source file. References to xsubs in reports now include a working link.
adds 6cd058f Take more care to avoid changing errno by saving and restoring it at the major 'edges' of the profiler.
adds 28bf046 Only apply margin-top: 5px to the calls in to a sub, not calls out.
adds d243947 Include source code from -e '...' command line option (not used, yet)
adds 9830acf Move error check from NYTP_printf to NYTP_close. Add note about source code access.
adds 8cf384e Record source from stdin (perl -) as well as perl -e '...'
adds 19c37fc Remove vestiges of perl 5.6 support, thanks to Jan Dubois.
adds a46238d Use 3-arg open.
adds 38a812a Point out the perils of profiling on virtual machines.
adds 460aada Simplify the fork test code.
adds dd5d050 Use "wbx" mode for the file, except on windows. Catch enable_profile being called when the profiler isn't initialized. Warn if user selects a clock but clock_gettime() isnt available. Add time-of-day to start pid and end pid tags. Warn if the sum of the statement times is more than 110% of the overall profiler time. Don't count time in fork() in child. Add a bunch of new attributes: profiler_duration profiler_end_time profiler_start_time total_stmts_discounte [...]
adds a0df8d7 There is no copyright and contact information at the bottom of the test.pl file.
adds 4eb2e97 Adjust trace levels slightly, mainly moving new fids and subs up to level 2. Be more paranoid about arith overflow etc in sub timing code. Add note re a possible bug/limitation in the HACKING file. Update the docs re inclusive timing of recursive subs.
adds cb4b637 Exclusive and Inclusive time column positions have been switched to be consistent with how the times are presented elsewhere
adds 5f297f0 Add migration of sub_caller data from eval fids. (big missing feature) Consolidate caches and provide a method to access and clear them. Add method to return hash of eval fid to base fid mapping. Add method to return hash of subs called by a fid. Add method to delete data of subs called by a fid.
adds c973aa3 Tidy up and expand Changes. Add -open option to nytprofhtml Add note to HACKING re another issue re sub caller locations in loops.
adds cb4550e Move sub_caller migration to new _migrate_sub_callers_from_eval_fids() method.
adds c66eb04 Make the --open option imply --html
adds b585af9 Just pass on --open to nyprofhtml.
adds 9859b22 Improved test descriptions.
adds 784f8de Make 'test.pl 5' run all the <test05.*> tests
adds e99d800 Don't complain about passing *.pm and *.pl files to test.pl
adds 46c1500 Add the attributes missing from expected test output in r526.
adds b58139f Make 'nytprofhtml --open' work on machines that does not run Mac OS X.
adds 8193bcb Document the nytprofhtml --open option.
adds 03451e9 Fixed *significant* error in time reported as spent in a subroutine, which was showing the sum of the inclusive and exclusive time instead of just the inclusive time. Ouch.
adds c1d4c18 Use standard tabstop (ts=8) in all vim modelines.
adds a863d7e Rename test.pl as t/20.runtests.t
adds 62fe362 No need to calculate the $diff twice in fmt_incl_excl_time
adds 93a1e83 Improve the Englishness of the prologue text
adds cb97ea3 Produce more readable timestamps in the code prologs.
adds b974778 Make fmt_incl_excl_time not repeat the unit
adds c0d9cb4 Failed to consistently convert '1 times' to 'once'.
adds 925f8d2 Sort the call locations by the time spent in the funtion as well as call count
adds de2c9ec Simplify; $caller_filename same as $filename.
adds c5e520b Don't show filename for call refs to the same file.
adds e4128b3 Cleanup; load_profile_data_from_file do need a filename argument
adds 4045f46 Cleanup; Use named constant for TIME_BLOCK marker
adds fb5524b Add stmts=0 option to disable the statement profiler (not documented yet as it's likely to change) Silence a spurious warn in a test.
adds 629210d Make indentation in the documentation code samples consistent.
adds 75f7f42 Use consistent POD item lists
adds 42291c1 Make tag type consistently unsigned char. Give better error if file uses compression but the NYTProf build doesn't. Send test diff's to stderr so they show up in 'make test'.
adds 147031e Add Devel::NYTProf::Data::Raw module
adds d2f7a0c Major improvement to handling of string evals... Don't call (the recently added) _migrate_sub_callers_from_eval_fids method as that wasn't a good approach - destroys information. Enhance the data model to make it easier to reason about string eval fids. In reports subs now list calls from string evals (including nested string evals) and lins with string evals list all the subs called by all the strings executed by that eval. Yeah!
adds 42bc97e Add ::Data method to read source, which gives preference to source embedded in the data. Rename fid_filecontents to fid_srclines. If the file can't be read then report the reason on the report page (a bit of a hack at the moment, but far better than the previous 'blank' page.) Silence an undef warning from xsub listing.
adds 9c2bf38 Move t/test90-stress.p to xt/test90-stress.p More random thoughts dumped into HACKING. Tweak Changes.
adds fae41d9 Regenerate MANIFEST via 'make svnmanifest'
adds 1ea7dd7 Incorporate Tim's explanations of the mystery chunks
adds 014cbcb Use '#!/usr/bin/perl' lines for the scripts
adds 79f3873 Let $. track the chunk sequence numbers
adds 8e28c57 Reuse the same SVs for each callback call.
adds 1aa228f Rename ::Data::Raw as ::ReadStream as suggested by Tim
adds ac73b19 Complete the rename to ::ReadStream.
adds 97f5455 Doc tweaks; document the header attributes used.
adds 7574bbd Oops - missing braces on if-block
adds 5e4aa1e Improve portability to older perls; gv_fetchpvs() not supported in 5.8
adds c0eea29 Tweaks to ReadStream docs.
adds d9b6852 The timestamps in TAG_PID_{START,END} are NV
adds d126e44 Add missing arg to 'invalid clock_id' croak message. Fix printf arg type warning.
adds 5d16268 Add test to demonstrate wrong line numbers given to subs called in while(condition). (added to xt/ since I'm not sure if it's perl version sensitive) Added xt/ directory to Makefile.PL clean clause.
adds e6abdea Update MANIFEST for new file in previous commit. Add more docs aboit clock=N option.
adds 66deb04 Give slightly more feedback during report generation.
adds 9a3f737 Thank Gisle in the Changes file. Add optional width arg to fmt_time. Use that to tidy the "spent %s making %*d call%s to" lines. (I looked at using fmt_time for the statement timings but chickened out. Devel::NYTProf::Reader needs refactoring to death.)
adds 1445528 Major update to docs about clock sources, SMP, processor affinity etc. Added docs for DB::finish_profile.
adds 510dcc3 Document stmts=0 option. Start preparing for 2.06 release.
adds 5645d2f Fix a typo I spotted, and another that ispell found.
adds 7d19db0 Another typo spotted by ispell.
adds edff6c9 Bump version to 2.07 (because PAUSE indexed the 2.06_RC1 release I made for cpantesters) Include t/test20-streval.x that I'd missed previously.
adds bef3117 Fix srclines_array() to drop the undef 0th line of source code.
adds 659247e Unlink destination (.js) file before copying new one so it won't fail for readonly files.
adds 377eea2 Docs my thoughts re savesrc option into HACKING
adds 31552da Improved html conformance thanks to Leland Johnson.
adds ed5cf84 Add perftest.pl script for profiling NYTProf::Data and nytprofhtml Assorted optimizations in NYTProf::Data, mainly caching.
adds d0d99de Further optimizations. Remove use strict & warnings from Devel/NYTProf/Test.pm, added in previous commit, as they affect the test results.
adds 9835e14 Removed column handling from Devel::NYTProf::Reader module, it's now just concerned with files and lines. A single callback per line improves performance and flexibility. Statement timings are now shown formatted with units.
adds ed28271 Format negative time values as seconds, not nanoseconds.
adds 8e497af Improve presentation of links to subroutine tables.
adds 93f09eb Move ::ProfFile class out to new ::FileInfo class. Move ::ProfSub class out to new ::SubInfo class. Add Devel::NYTProf::Constants module Add constants for elements of FileInfo array.
adds 2fd9f32 Refactor part of strip_prefix_from_paths into new make_path_strip_editor function.
adds a92eadb Set NYTP_FIDi_EVAL_FI element as weakref to eval fileinfo in XS code for speed. Bless fid_fileinfo elements in XS. Use make_path_strip_editor instead of strip_prefix_from_paths because strip_prefix_from_paths enthusiatically recurses into structures, which won't work now objects has refs to other objects. Rename and generalize make_fid_filenames_relative into make_filenames_relative and make it work for sub_subinfo and sub_caller as well as fid_fileinfo. Remove $opts [...]
adds 9f3b1fc Add array of refs from a fileinfo to the fileinfo's of all the string evals it executed.
adds 74ef4d0 Hovering over times in subroutine or file summary tables now shows the percentage time.
adds faa1d2a Add trace for statement discounts. Discard remaining statement discount - there's almost always 1 due to the finally 'leaving' the perl source code. Fix last_line_num (used in trace statements) which wasn't being updated.
adds 3b11a52 Add summary sentance to index page given overall time and other stats. Pass-thru existing $ENV{NYTPROF} in demo/demo-run.pl Return time() instead of 0.0 in gettimeofday_nv() if neither gettimeofday nor u2time is available.
adds aeff7de Some initial exploratory work towards extending nytprofcsv to include higher-level detail, like nytprofhtml does, and so be useful for testing same. Needs more data model work, though, to avoid duplicating too much nytprofhtml logic.
adds c153ced Add ::Constants module (missed from earlier commits)
adds d1198cb Add Exporter, even though it worked just fine without it.
adds 801140f Populate $fi->subs data direct into fileinfo in XS. Delete fid_subs_map() as it's no longer used.
adds 4055d83 Add NYTP_FIDi_SUBS_CALLED attribute to fileinfo containing a hash ref of { line => { subname => [...callinfo...], ... }, ... } and corresponding $fi->sub_call_lines() method. Modify $fi->hash_evals to optionally walk and return the tree of nested evals. Modify line_calls_for_file to use has_evals. Delete base_fid_2_eval_fids_map and caller_fid_2_subname_map as they're no longer used.
adds d04aecf Added optimize=0 option to disable the perl optimizer so you can see more accurate statement execution counts for some kinds of constructs.
adds 73318fc Document effect of not being able to profile sub calls made due to overloading. Note change needed to Perl_amagic_call in perl internals. (The same issue (direct use of Perl_pp_entersub) affects call_body(). If that was changed then the profiler could view string evals as sub calls.)
adds fb6e64b Add total_sub_calls attribute to data model and html report summary line.
adds b93258a Don't normalize to zero total_sub_calls in test results. Calculate totals of statements and time in file table from the actual values shown and add a note about statements and time spent in string evals (because we're not including them properly at the moment).
adds c6992cb Fixed searching @INC for source files for reports. (Volunteers wanted to add portability to windows etc)
adds a8b2283 Rework handling of filename, specifically don't call make_filenames_relative() to edit them to be relative. Add abs_filename method to abstract search @INC.
adds fd46d3c Add new test for nested string evals. Currently fails because we don't yet propagate inner evals times to the outermost eval statement. Tidied up timing test failure messages.
adds 2d3839d Add t/test21-streval3.x missing from previous commit
adds b8334ae Make delete_subs_called_info() adjust total_sub_calls attribute (and so enable test14 to pass with different versions of AutoLoader)
adds 3c28717 For $fi->abs_filename returning the still-relative filename is better than returning an undef.
adds 42275a2 Prepare for 5.8.9+ & 5.10.1+ by ignoring calls to our own DB::_INIT sub which shows up once perl uses PL_addr[OP_ENTERSUB] instead of hardcoded Perl_pp_entersub.
adds 071c39f Add script to exercise calls made by overload
adds 0841020 Added savesrc=1 option to copy source code into the profile so reports are not affected by changes to the source files.
adds 5e0df8a Add package-level summary idea to HACKING. Format negative times nicely. Add thead, tbody and tfoot tags. Don't show discrepency in times due to string evals if it's very small (ie mostly due to float precision).
adds 97135e2 Summary tables can be sorted by clicking on header columns. Woot! Not quite perfect yet, but pretty good.
adds 9801755 Fix $subinfo->package to work for multi::level::packages
adds e5ce087 Add 's' unit to '0' value returned by fmt_time()
adds fc256c9 Merge the separate pkg and sub name columns in the sub table so that, for example, full names can be copied and pasted without an extra space or tab appearing. Fix sorting of sub names.
adds f9cd48b Leave the table rows in their original order to start with
adds 848c05c Fix up test for fmt_time returning "0s". Update docs to mention NEXT re problems with caller() in perl < 5.8.8, and re calls made via operator overloading.
adds 46d2c5b Call footer callback when footer used - this fixes @on_ready_js (we loose the old regex replacement, but that's not needed with a callback) Subroutine table should only be sortable when all subs are included. Fixed tablesorter parsed for fmt_time.
adds 383aa20 Time spent on statements in a string eval that was nested in another string eval was not being counted at the outermost level, so was being lost. (We'll need to drop the current way string eval times are handled when we start reporting string evals just like normal files.)
adds f220a13 Quiet unused variable warning.
adds 4e0f996 Added $subinfo->clone method. Extended $subinfo->merge_in method.
adds eafe0d6 Added $profile->package_subinfo_map method to return info on all the subs in a package (optionally merged). Added $profile->packages_at_depth_subinfo method that calls package_subinfo_map and restructures the data into a summary per rolled-up package name at various depths.
adds 790ca1b Add package summary tables to index page. These show summary stats, like excl_time, for packages. Not just individually but also rolled-up. Still a work-in-progress. No color coding yet.
adds 0c7699f Add some additional const'ing.
adds d09f54f Clean up some function prototypes.
adds 0c8c9b3 Make $subinfo->is_xsub more strict. Make $subinfo->merge_in more reasonable.
adds ed117fa Reorg the demo code. Run the while(<>) example and update the comments to reflect the fact it should work (but currently doesn't)
adds 8dbacef Report merged subs properly. try (unsuccessfully) to get tablesorter to perform decending initial sorts when a column if first clicked.
adds b1775a8 Replace my_snprintf with plain sprintf because my_snprintf from pport.h is slow, especially for threaded perls (14% of pp_entersub_profiler), and we don't need the extra safety as there's no risk of overflow. Balance braces in #if/#else in get_file_id. Start on a workaround for OP_UNSTACK limitation (perlbug#60954). Don't setup opcode redirections for statement profiler if it's not being used. Don't get time in statement profiler if it's not enabled at the time. Othe [...]
adds 7562538 Add assorted thoughts to HACKING
adds eb0e9cd Major update and reorg of HACKING.
adds ba56b3c Minor tweaks to HACKING
adds 4e66f20 Add NYTP_SIi_* constants for sub info
adds b294575 Remote hard tabs that have crept into NYTProf.xs
adds 30dff4c Add NYTP_SIi_CALLED_BY element to sub info ({ fid => { line => [...] } })
adds 88194e6 Move sub info and sub caller time mormalizatio for tests into new normalize_for_test method. Delete unused fid_sub_calls_map() and _migrate_sub_callers_from_eval_fids() subs. Move remove_internal_data_of() and make_filenames_relative() to end of normalization steps.
adds 9cc7ab5 Detect version mismatch between bin/nytprofhtml and the core lib.
adds 093c540 Cosmetic tweaks to Devel/NYTProf/Util.pm Add a couple of thoughts to HACKING
adds 3e3bbca Shift the normalization (for testing) of some data from input to output, to avoid throwing data away. Add skip_stdlib option to dump_profile_data() so it skips data related to 'library modules'. (Implemented with an ugly callback hack for now. The current recursive dump_profile_data has outlived its usefulness and will be changed later to call methods on objects.) Removed remove_internal_data_of() and make_filenames_relative() as they're no longer used.
adds b3c0aa2 Remove sub_callers element from profile data. Move data about callers to a sub into the sub_subinfo object for that sub. (sub_caller data is currently regenerated for the dump used by tests.) Merge anon subs defined on the same line of instances of the same string eval.
adds 7524068 Fix version number in bin/nytprofhtml. Add dump() methods to ::FileInfo and ::SubInfo. Modify _dump_elements to call dump() method where possible. Extend $si->caller_places and refactor caller_count() to use it. Remove migration scaffolding for fid_info filenames (/.../ prefix) and sub_callers data, and update tests to match.
adds c5dcb93 Reworked dumping of fileinfo data to include subs defined and subs called. Added $fi->normalize_for_test method (currently duplicates normalization of sub caller info because merging of anon subs isn't done right yet).
adds a242a13 Start work on normalizing eval sequence numbers in file and sub names. Any volunteers to implement normalize_eval_seqn()?
adds 4bfffde Avoid core dumps in the sub profiler if the cv isn't setup correctly (looks like Class::MOP doesn't give the CV GV stash a name, which makes sv_dump(cv) core dump)
adds c2ad64b FileInfo dump() now takes option to not dump internal details. Data dump callback uses that to not dump internal details of std lib modules.
adds d2a2919 Include details of string evals in FileInfo dump()
adds bd62ed6 Normalize total_sub_calls attribute to 0 for tests (due to use of Autoload from perl lib). Remove count of evals from main fileinfo dump line as it's redundant now we dump eval info. Fix compiler warning.
adds b5f65a2 Make savesrc option set PERLDBf_SAVESRC | PERLDBf_SAVESRC_NOSUBS.
adds 746f951 Avoid undef warnings from $si->merge_in(...)
adds efac7c5 Add details of string evals to file table on index page. Add $fi->number_of_statements_executed method - but it's not used yet (awaiting deprecation of the old way of handling string evals in line_time_data)
adds aedfae9 Colorize the package roll-up summaries on the index page.
adds 3f20df4 The sub profiler now calls reinit_if_forked() if the statement profiler (which normally calls it) isn't running. Update HACKING file. Tweak Changes file. Don't ask tablesorter to perform initial sort on package rollup tables.
adds 992c698 Implemented normalize_eval_seqn, but left it disabled. Added test file for 'anon subs defined in string evals' Added test results file that shows current partial normalization of eval sequence numbers. Pondering best course of action...
adds f368fac Fix for http://www.nntp.perl.org/group/perl.cpan.testers/2009/01/msg2985535.html (Anyone have any idea about the SSNEWa "cast from pointer to integer of different size" warning?)
adds eb432c1 Initial work on swiching output to different profile files.
adds 02f7e33 Show 'Running tests with options ...' during 'make test' to give more context for any failures
adds ab41136 Implement DB::enable_profile($new_filename). Increment the count of the statement containing DB::enable_profile().
adds 197b1f3 Clarify a trace message. Use NYTP_* constants in more places.
adds 7970754 Be more generous with time limits when running automated tests (to fix failures like http://www.nntp.perl.org/group/perl.cpan.testers/2009/01/msg3010800.html)
adds a79f139 Replace old $ENV{NYTPROF_EXIT_AFTER_LOAD} hack with shiny new $ENV{NYTPROF_ONLOAD} hack. Make _dumper output more readable.
adds 7148a29 make clean be more thorough Update HACKING to delete enable_profile($new_filename) now it's done.
adds 6b0a677 Rewrite all "(eval \d+)" to "(eval 0)" while reading the profile data. Merge data for subs that now have the same name (e.g. __ANON__[(eval 0)[foo.pl:1]:1]) Adjust expected test results to match.
adds dbf44b2 Fix core dump at trace level >= 4. Make option zero available via env var (it's useful for diff'ing trace output). When merging sub info (e.g., due to eval seqn number being normalized to 0) store the details of the lowest fid seen. This is needed to make the tests pass between different versions of perl with different hash key orders. Update effected tests.
adds b6ab41f This one was wierd! It seems that the statement $code = "sub { 1 }"; eval($code)->() for (1,2) only causes one eval as far as NYTProf can see, for perl > 5.8.6. It's as if the compilation from the first eval is reused. Changing the $code string to be a sub with side-effects fixed it. Changing the code like this eval($code)->(); eval($code)->(); also fixed it.
adds a7b2c63 Make -v option to t/20.runtests.t slightly more useful.
adds 1dc52ad Using a sub with side effects isn't enough to avoid the weirdness. I can't see a pattern that would indicate a root cause: http://cpantesters.perl.org/show/Devel-NYTProf.html#Devel-NYTProf-2.07_93 So I'll try this simplification of the test script.
adds 29d71cf Save some headaches for windows users trying to profile mod_perl apps.
adds 2777b0d Use NYTP_SIi_* constants. Remove s/(eval \d+)/(eval 0)/g logic from perl code now it's done in C.
adds a1a5696 Save/restore errno in incr_sub_inclusive_time() and more finely in pp_entersub_profiler(). Use NYTP_SCi_* constats in more places. Refine 50.errno.t slightly.
adds c0ca17e Fix signed/unsigned mismatch
adds 76c3bfe Rewrite test system: Each test now has its own .t file (using t/lib/NYTProfTest.pm). Next steps: Remove 20.runtests.t and update HACKING to reflect the new test system.
adds fc21285 Fixup t/test16.t for perl < 5.10
adds 88a204f Fixup t/test30-fork.0.t for Windows
adds ce64592 Remove no_plan from tests, allow additional tests (see example in t/test01.t)
adds 4025851 Removed t/20.runtests.t, fixed MANIFEST
adds d5b696a Bump version to 2.08 for release, finally.
adds 5e79b33 Added note to HACKING about reporting when method cache is invalidated.
adds 2dac798 Make html_safe_filename remove colons (and some other chars) from filenames to avoid problem on windows. E.g., https://rt.cpan.org/Ticket/Display.html?id=43798
adds 28c19c7 Added Changes not for previous commit. Plus a note about package tables added in 2.08.
adds df6ab27 fixed test 30.util (wrong test count; issue 13)
adds 4654c1d Remove embedded dots from filename for html report generation. Tweak the level for a trace message.
adds 3754030 Fix tests to work with previous html_safe_filename change.
adds 7524799 Refactor (reorg) if/else logic in get_file_id() to make it easier to add better autosplit handling.
adds 0988250 Initial structural changes to support smarter autosplit handling.
adds a518a6f Added missing t/test22-strevala.t to the MANIFEST. I aslo wanted my first commit to be a small and simple one.
adds 8175bfb Renamed t/\d\d.test.t files to t/\d\d_test.t for greater portability, VMS ODS-2 files can only have one period/dot.
adds b140591 Renamed more files for greater portability (removing periods/dots for VMS)
adds b3d4510 Renamed .js and .css files for greater portability (removing periods/dots for VMS)
adds 50fe106 Added t/92-file_port.t as a developer-only and request-using-ENV test, to help maintain portable files, currently .indent.pro and .perltidyrc fall foul of portable filename characters as defined by ANSI C and perlport.
adds 3c7d25b NYTProf.xs's open_output_file use mode 'wb' and not 'wbx' to avoid unsupported error when on VMS.
adds 486f129 Give credit where it's due
adds 9f19ee8 Fix up t/92-file_port.t to fail more gracefully when not runnable or enabled.
adds d94e30c Fix extra %s in log warn format. Extend test harness to include combinations of compress=1|0 and savesrc=1|0 (savesrc is currently disabled because this testing caused coredumps etc. I'm investigating.)
adds 8301c9c Add special case for NTP_write with length 0 as fwrite with len==0 is problematic (http://www.opengroup.org/platform/resolutions/bwg98-007.html) When using compression this code isn't executed, and the compression code handles len==0 properly, which is why we've not encountered this before. Use gv_fetchfile_flags if available. Fix line count in save src log message.
adds 858e9e2 Add savesrc, compress, and abort (on first error) options to tests. Set $ENV{NYTPROF} once per test group/.
adds 0043515 Fix savesrc by writing source at end of profile run added a fid flag to indicate src is available, and another to indicate src should be saved.
adds beb404a Skipping tests this way because of the way Test::Portability::Files::import sets a plan, and if multiple "plan skip_all =>" are used this causes a failure when Test::Portability::Files is available - "You tried to plan twice".
adds b887b00 Revert to earlier t/92-file_port.t and do require Test::Portability::Files instead of use to avoid triggering a plan() via the import. We call import explicitly later. Don't use all_tests because the DOS (8.3 name length) triggers lots of warnings that we'll never fix, and that's the only test not enabled by default.
adds d9afc55 Don't set PL_perldb when processing options (from NYTPROF env var) because it causes problems for non-profiling apps like nytprofhtml.
adds 120e583 Neaten the warning by removing the " (@INC contains..."
adds 9c3ebc1 Show NYTPROF and stdout of subprocess if it fails.
adds dce2dfc Enable more detail on this test failure http://www.nntp.perl.org/group/perl.cpan.testers/2009/03/msg3444845.html
adds 318479e Add NYTP_DEFAULT_COMPRESSION constant to application can tell if zlib was compiled in. Report NYTP_DEFAULT_COMPRESSION in t/00-load.t. Make t/92-file_port.t skip_all message consistent with other tests.
adds 269da9a getcwd() on VMS returns VMS paths, these looks like u:[username], sticking a slash results in u:[username]/test.t and this is not a valid VMS filename, not inserting a slash results in only 4 out of 31 tests and 21 out of 491 sub tests failing. Getting there.
adds cc9d132 Add NYTP_FIDf_IS_ALIAS flag distinct from NYTP_FIDf_IS_AUTOSPLIT (NYTP_FIDf_IS_AUTOSPLIT is set for any autosplit file, NYTP_FIDf_IS_ALIAS is set for those we successfully match to a 'parent' and thus don't save) Implemented find_autosplit_parent() Updated tests to reflect flag changes, but the test (test14) doesn't actually exercise the new code yet because start=begin is required but the tests use start=init.
adds 486602c Add docs for "Unable to open '... (autosplit into ...)'" warning. Adjusted test14 so it tests new autosplit logic. Extend test harness to enable per-test override of NYTPROF env values.
adds 088be12 update HACKING note re string evals in autosplit files
adds 7567ac4 Prep for release
adds 42b546c Prep for release - bump version
adds 811097e Fixing previous VMS specific patch, compiler complains about invalid statement if VMS is defined, braces are required.
adds 0b20ad1 Allow nytprof.out file to have 0 size on VMS as buffers have not flushed.
adds 3af1783 Skip all fork() tests if on VMS
adds 894786e This isn't pretty but it ensures the paths used are valid on VMS, previously they were an invalid mix of *nix and VMS.
adds dacb981 Filenames can have chars that are special regexp chars, escaping some I ran into on VMS.
adds 8865bf9 This is .js not .pl, the trailing comma caused a warning in MS IE
adds f697498 Use quotemeta() to backslash non-'word' chars.
adds 5f54340 On VMS fflush() does not fsync() to disk, have to skip this to avoid infinite loop.
adds 0549f25 I didn't mean to add META.yml to the MANIFEST in my last change.
adds 07eea9d Swap dot/period for underscore in outdir and new files to ensure is valid on VMS, skip test 14 and 60 as the expected profile data does not have VMS paths and will not match. Now all tests pass on VMS.
adds fce1e90 TIMTOWTDI and I agree \Q quote non-word characters till \E is neater.
adds cf70333 Yet Another VMS Fix, ODS-2 files are limited to 39.39 chars
adds fd4a37d Trailing comma in .js causes warning in MS IE
adds 9ef5360 Prep for release
adds 94800d0 Last minute little fix for 'make clean'
adds 0ba1e60 Tweak Makefile clean target to match VMS changes Add a couple of notes to HACKING
adds 76a7da9 Quiet a warning from the current bleadperl.
adds 5e4412b Initial work-in-progress using jquery treemap plugin. Quite rough at the moment. Checking in for-the-record as I'm going to go experiment with http://blog.thejit.org/javascript-information-visualization-toolkit-jit/ next
adds c3abf2f Make DB::enable_profile work after finish_profile is called.
adds e855a0a first cut of the nytoprof to cachegrind calltree output script.
adds d394559 Fixed call count for XSubs that was one too high. Minor tweaks to bin/nytprofcg Added more docs for disable_profile/enable_profile/finish_profile. Extended tests for disable_profile/enable_profile/finish_profile. Removed unused sub_xsubs_hv variable. Avoid infinite loop in eval_outer_fid() when data is corrupt.
adds ce3e3ec Rough, but working, interactive package treemap using the JavaScript Information Visualization Toolkit (JIT)
adds fae2186 Add comment outlining a possible implementation of recording sub caller sub names. Add note to Limitations section of docs that sub profiler doesn't record calls to xsubs that exit via an exception.
adds b8e4107 Yet another take on treemaps. This time using js-treemap. (Still very rough)
adds 220d7de Avoid undef warnings where subs have no known line numbers (eg Moose) Note pp_leavegiven and pp_leavewhen in HACKING
adds d8aeb7d Fixed enable_profile() after fork thanks to delamonpansie http://code.google.com/p/perl-devel-nytprof/issues/detail?id=15 Also moved some comments re autosplit to a better place.
adds c3c0a38 Changed enable_profile() to discard the time spent since profile was disabled.
adds 1487aaf Made NYTPROF_TEST=trace=N work for 'extra tests'. Added extra note() when extra tests are run. Added sleep after reporting an error status from a subprocess.
adds d0daadc Removed unneeded (and problematic) mg_get thanks to delamonpansie http://code.google.com/p/perl-devel-nytprof/issues/detail?id=16 (I don't know why it would have caused an assertion failure in perl.) Removed hashtable_memwidth var as it's no longer used.
adds 029d356 Added detection of file names like "(eval 1)" that don't have the expected filename details added (they should look like "(eval 1)[/file:line]") They're treated as if they were "(eval 1)[/unknown-eval-invoker:1]" Added a new NYTP_FIDf_IS_FAKE flag to indicate /unknown-eval-invoker is fake. Modified $fi->srclines_array() to return fake source if NYTP_FIDf_IS_FAKE set. Added a test but it doesn't exercise the case as it's not really embedded (at least I assume that's t [...]
adds 38a0aa0 Fixed to use correct scripts during test and so avoid permissions issues, thanks to David Golden.
adds 5facf9a bin/nytprof* --help exits true
adds 1c59117 prefer usage() to &usage because we're not using any magic
adds 2fc4214 Invalid parameters to bin/nytprof* also prints usage
adds ce01d21 Allow \ to escape things in NYTPROF environment variable
adds 4685e79 Clean up crud
adds f731d9e Test \ escape in NYPROF environment variable
adds 5c149e7 Disable once, redefine warnings for t/31-env.t
adds 7cc8875 As of r748, require Test-More-0.81_01 or greater
adds 8471415 Give a hint to users when they get no source code for -e (and some other cases). Updated svn:ignore for t/ dir. Added const_bits2names() to Devel::NYTProf::Constants to convert flags to names. Not currently used. Fixed undef warning when code has no packages.
adds 29a1dd8 Only generate fake hint src line for -e & - cases. Tweaked t/31-env.t
adds 59b16dd Switched to using raw (non-minimized) src code of js-treemap.
adds 3bc7aa4 Avoid core dump if eval fid refers to an invoking fid that we've not seen yet (should never happen).
adds f190b93 Add a summary report identifying which settings influenced failures, e.g.: # Test failures of test20-streval related to settings: # savesrc: 0 => {pass 8}, 1 => {fail 4,pass 4} # use_db_sub: 0 => {pass 8}, 1 => {fail 4,pass 4}
adds d581c89 Added test for "(eval N)" style filenames, i.e., missing the invoking filename.
adds ddd741c Improve treemap look and behaviour.
adds 5c69cda Allow undef entries in fid_fileinfo_av
adds fd348da Update a problem description in HACKING
adds 7f520ae Fixed suprious "Unable to determine line number" warnings when using options like -p, -n, -Mfoo.
adds 9d7affd Use PL_retstack_ix <= 2 as additional check for is_preamble.
adds 5de6eb3 Use PL_scopestack_ix instead of PL_retstack_ix because PL_retstack_ix is gone in 5.10
adds 5925762 Added license, homepage, bugtracker, repository and MailingList resources to META.yml thanks to Michael G Schwern. #rt47015
adds 70a951f Tweaked warning message. Disabled experimental treemap output (as I'm about to refactor it, again, but want to make a release meanwhile).
adds 53e4382 Prep for release.
adds 523558e Deleted files relating to old treemap code
adds 595ed33 Deleted more old treemap files
adds e3c09de Updated MANIFEST
adds 48ea191 Another move in the 'how slow are cpan testers' game... http://www.nntp.perl.org/group/perl.cpan.testers/2009/06/msg4227689.html
adds 9d67ecb This one's a little harder to explain, but I'm happy enough to assume that it's reasonable behaviour for the three select(..., 0.2) calls to actually delay by 0.546s in total: http://www.nntp.perl.org/group/perl.cpan.testers/2009/06/msg4230206.html
adds 01e3660 Added test diag warning for people running on xen, due to it being a regular factor in test failures: http://www.nntp.perl.org/group/perl.cpan.testers/2009/06/msg4246803.html Added note to docs and Changes re Joshua's NYTPROF env var parsing changes.
adds d9a9d6a Added treemap view of package and subroutine times, with drill-down. Far from perfect, but reasonably usable. (I'm aiming to get it polished up in time for OSCON.)
adds d973cfa Changed left-click zoom from 'zoom all the way to the leaf' to 'zoom one level _towards_ the leaf' using code suggested by the JIT author. Started coloring the tree (the colors are ghastly, partly because the way JIT colors treemaps is based on a straight-line through RGB color space).
adds 86e549e Added sysops=1 option which enables profiling of perl opcodes that make potentially slow system calls. Just a rough first version for now. pp_sysop_profiler needs to be refactored with pp_sub_profiler next.
adds 8ca7cb7 Record builtins, like sleep(), as having names begining with "CORE:" (one colon) in the current package. Added a few more opcode for pp_sysop_profiler to help demo/test it. Fixed a bug with sub names containing colons :) Replaced all use of warn() with new logwarn() that just does vfprintf() to stderr, to fix infinite recursion via __WARN__. Removed OpNAME(PL_op) from the DB_leave trace message because it seemed to be pointing to gibberish (freed memory?) in some cas [...]
adds 13103f1 Assorted refactorings getting us closer to having a treemap on each file page. Removed needless 'subs' levels in trees. Only add stretched alpha gradient background image to nodes big enough to be worth it (saves >500 images on the perlcritic data).
adds fd8fb74 Don't include subs with 0 time in the treemap. Assorted tweaks and polish.
adds 428e08d Fix to minimize jagged gaps (submitted to JIT author)
adds fb6c75e Updates to HACKING
adds 3499e12 Don't create treemap boxes if they're too small to be useful. Other minor tweaks.
adds d1665d5 Add details to treemap tooltip and tweak style. Generate separate incl_time and excl_time treemaps. Start work on callgraph visualization (but it won't get any further till the subroutine profiler is extended to record the calling subname, not just the calling file and line).
adds c1792d5 Give the user a clue, or three, about the treemaps.
adds 13c8b51 Added columns to the main source code reports to show a count of sub calls and time spent in those calls. Assorted cosmetic improvements.
adds e923fe5 Merge pp_sysop_profiler into pp_entersub_profiler. Enable sysops=1 for all tests.
adds 71c5230 Fixed recursion depth measurement. Changed colors on report pages to be less saturated.
adds 8404ad4 Fixed (rare) overflow bug for 32bit perls. Fixed discarding of (rare) negative intervals. Added log=F option to write trace log to a file. Added sequence numbers to sub calls to aid debugging Added sanity check warning for negative times from sub profiler
adds dc40f84 Declarations must come before executable code (for MS VisualC)
adds 5800788 Hash keys length are only 32 bits while STRLEN may be 64
adds df148e7 An (unsigned long) is still only 32 bits on 64-bit Windows. %Ix prints the right number of bytes for size_t values for both 32 and 64 bit Windows.
adds d2c60d5 Renamed sub_call_start_t to subr_entry_t and added a pointer to the previous sub entry, which is presumably the caller of the sub being entered (ignoring for now any issues with enable_/disable_profile). For now it's only used in a trace statement. Added newlines to logwarn calls that lacked them.
adds 487f8fc Refactor pp_subcall_profiler to allocate the struct using SSNEWa directly, instead of copying it later. Now links into subr_entry->caller chain before op is executed (incase op is xsub or sysop that invokes perl).
adds 8298fad Store fid and lin in subr_entry_st as ints instead of formatted string.
adds 14abd6b Use separate data file name for each test, so tests can be run concurrently. Added 'prove' target to makefile that runs prove -j 9 for quicker testing. Reduced time taken by t/test10.
adds 1eecba9 Switched to using context stack offsets instead of pointers to track current sub enter and chain of outer callers. A step on the way to at least detecting xsubs & builtins that exit via exceptions. Record calling fid and line before invoking the op. Added docs describing how the subroutine profiler works.
adds 6a2dec9 Added sysops=2 option to control how builtins are aggregated. Added docs for sysops option.
adds fabf719 Declarations before executable code (plus a missing 'const')
adds 078fb66 Use %p to format pointer values. Solves potential issue with Cygwin, which may define WIN32 symbol too but doesn't use MSVCRT.dll
adds 230b374 Added note about standard deviation
adds 37a7c79 Added (undocumented) NYTPROF_FMT_TIME env var for experimentation. Tweaked the demo code
adds ccb9d30 Refactored NYTProfTest to enable more flexible usage. Exposed do_foreach_env_combination logic. Added $profile = profile_this_code(src_code => '1+1'); function
adds 783239b Added recording of calling sub to subroutine profiler. (Not yet added to reporting data structures.) Bumped file format version number and removed old minor version fudges. Noted use of XCPT_* macros as a good fix for the 'xsub or sysop call is lost if returned via an exception' issue. (Though I've no plans to do that anytime soon.) Fixed setting of $. in callback interface to invoke magic. Rewrote t/22-readstream.t to remove dependency on a (now outdated) frozen pro [...]
adds 07759c3 Fix occasional failures when running 'make prove'
adds 4c3e3e9 Added the calling sub name to the sub call data structure (a hack for now - sub call info needs to be name a firstclass citizen and fid:line's downgraded)
adds f81b580 Added .gdbinit http://cpansearch.perl.org/src/GOZER/mod_perl-1.31/.gdbinit which I was reminded of by Josh ben Jore's http://yapc10.org/yn2009/talk/1973
adds 6b3a3a5 Finally got robust calling subroutine name working in a way that doesn't run into problems with exceptions from xsubs and other odd cases. (The subr_entry structs are no longer linked into a chain.) Currently allocates/frees and SV per call, but that can be fixed later. Assorted variable renamings.
adds 4d715c0 Clarify the impact of the perl api call_*() functions not being profiled in older perl, and specifically mention tie().
adds 9d3aafe Updated tests to match modified xs file in earlier commit.
adds 043b3b0 Sub calls made outside of subs are now deemed to have been called from <Package>::BEGIN. Calls to non-existent import() subs are no longer profiled.
adds bf515c0 Renamed MAIN to main::BEGIN to match the name derived elsewhere. Improved an error message. Resync'd the tests.
adds 7d4b5f5 Added t/nytprof*.out.* to Makefile clean target.
adds 23688d5 Detect error writing to pipe to demo script
adds c38f840 Significant reworking of the subroutine profiler. Lots of code moved from second phase (after op returns) to first phase (before op called) and third phase (the destructor). Much better placed to implement "exception from xsub" catching. (That situation is tested for and detected but not handled yet.)
adds 477c85f Keep separate entries in subr_entry for called pkg name and called subnam (eithout pkg) Return a gv from resolve_sub as a fallback, instead of formatted sub name. Added a trace_level 1 note about a edge case not covered by test suite. resolve_sub also doesn't need to bother with sv == &PL_sv_yes for missing "import" subs as we hide those earlier on now. Removed explicit creation of <package>::BEGIN for caller name as the code does that naturally now (perhaps it always did).
adds 24ff700 Tweaks to Changes and HACKING
adds a2f8673 Renamed NYTP_TAG_SUB_LINE_RANGE to NYTP_TAG_SUB_INFO and future-proofed the output format a little. Deleted old t/22-readstream-v20.out that's no longer used. Updated assorted entries in HACKING.
adds 8c6868b Changed from using the hackish and limited subname_at_file_line() method, to using the sub caller data collected at runtime. Changed "SUB_LINE_RANGE" tag in ReadStream to "SUB_INFO"
adds e74554f Implemented a basic interactive Radial Graph view of the subroutine call tree. Uses the RGraph visualization (http://thejit.org/Jit/Examples/RGraph/example1.html) It's cute, but doesn't scale well to large apps, partly because the nodes aren't placed very well by JIT.
adds 4cfa829 Renamed sysops option to slowops and added match and subst (s/// & m//) opcodes. Fixed presentation of xsub stubs in nytprofhtml.
adds 72167fa Added --one option to tests as shorthand for --leave=1 --use_db_sub=0 --savesrc=1 --compress=1 Fixed --html/--open option to work even if there's no .x file.
adds d5ad028 Added test for goto. (Its time to bite that bulleat as it's distoring the call graph, e.g, when Exporter delegates to Exporter::Heavy)
adds e24d09b Fix __attribute__format__ and the compiler warnings revealed by it.
adds ea54e5d Sync test16 results.
adds 6b40139 Change subr_entry caller_* name elements to use pv for package and sv for name, like called_* as a step towards chaining them, so called becomes caller of deeper sub. Switch back to a global subr_entry_ix but use the save stack to maintain it (not used yet). Tweak subroutine profiler docs.
adds 22b2cdb Added reuse of called_sub* details from outer subr_entr if they're available. (They're not available for xsubs or slowops, in which case we caclcuate the caller). This is fast and gives a well connected call tree: the sub name we called becomes the name of the caller when we go deeper. If we were to calculate the caller each time then in some cases the name would differ. Sometimes the calculated caller is more accurate so I've added a findcaller option to enable that [...]
adds 1513ee0 Now the fun can begin... add generation of very basic Graphviz dot file. (I plan to add attributes and per-package subgraphs later.)
adds 395b062 Just a little polish.
adds 8c60914 Started work refactoring to (finally) profile goto &sub sanely. (That's the last significant crack in the subroutine call tree.)
adds edadc8a Major rewrite of subroutine profiling to include goto &sub calls in the call tree. Sync test results affected by the extra detail we now capture.
adds ad6dee5 Use "main::RUNTIME" as the name of "caller" of subs called by main:: code.
adds e0f3ce3 Fix goto'd subs to not be treated as xsubs in perl 5.10 Moved list of slowops out to a .h file and added a few more for now. Sync'd test16 results for perl 5.10
adds b0fbc03 Added fcntl to slowops and reenabled print as a slowop Tweaked opacity of hovering box on treemap. Deleted old package hierarchy tables (superceeded by treemap) Now strips out @INC paths from filenames and __ANON__[/file/...] subnames in reports. Removed per file 'average statement execution time' from index page file list.
adds 9bc6062 Added bin/nytprofcg to Makefile.PL EXE_FILES Removed average time per line column from reports. Made the (rarely used) value available via a tooltip.
adds 3fdd4d8 Removed inclusive time treemap as it's not actually useful. Removed radial callgraph as it doesn't scale to handle large apps. Shuffle treemap colors so there's greater visual difference.
adds b6b185e Add clusters (to groups subs by packages) to the graphviz dot file.
adds 5807a7c Resync tests to include print and unlink slowops.
adds c6342ee Still fiddling with graphviz output... Make the top-level dot file only contain packages as nodes and started extending the code to allow per-package dot files that'll show all the subs in the package and any others that called those.
adds 99005f4 Sync test16 result for perl 5.10+ Sync test61-submerge result - I suspect there's a perl version specific behaviour affecting this test
adds 224899a This C, not C++. Declaration must happen before any executable code inside the lexical scope!
adds 4f8a1be Enabled slowops=2 by default, at least for now. Refine comments in goto handling code. Avoid using note() in tests. Fix labeling of slowop subs. Use lexical filehandle for html output and reorg control flow for index page. Tweak graphviz output to behave more sanely more often.
adds 3f1fb68 Add gotobug directory containing a test case for a significant problem affecting perl <5.8.8. ** I'd welcome any help I can get with this **
adds 90b904b Fixed caller() problem with perl <5.8.7, many thanks to Bram! Synced t/test61-submerge.rdt.
adds e63fd78 Tweak Test::More dependency. Delete gotobug directory.
adds a4a0259 Finally got GraphViz file generation working in a reasonable way. (Lots of scope for polish, but at least it's usable and useful now.) Added entry for fake main::RUNTIME sub.
adds 60a9458 Synced test61-submerge.rdt
adds 51c7cab Made JSON::Any optional. Fix main::RUNTIME fake sub generation when there's no subs in main:: Fixed compiler warnings. Resync'd tests with main::RUNTIME fake sub enabled. Fixed NYTProfTest.pm to properly abort test group on fatal error.
adds 86ebd98 Be more hintful in the 'inflate failed end of input file' error message. Detect and warn when subr_entry_ix <= prev_subr_entry_ix (Sudden death is soon to follow. I'll probably have to implement an eval block around the sub profile call, sadly.)
adds d9ecfe8 Clarify impact not being able to profile calls made by call_*() in older perls.
adds 8e4695f Fix test results for tests that don't call subs from "main::RUNTIME". Add some comment notes re main::RUNTIME in NYTProf.xs. Add note to Changes re desire to update and test new JIT release.
adds ac08b98 This changes only documentation, no testing should be required. Most changes are quite obvious. A couple might be changes to acceptable British spelling, but the document doesn't have other Britishisms that I spotted, so I changed them too. The change in the SMP Systems section isn't for spelling. But I had trouble parsing what it was that "systems have", so I reworded it.
adds 768eba3 Added endatexit option (for internal use, e.g., by possible Devel::NYTProf::PgPlperl module) Added workaround for current_cv returning NULL. Fixed compiler warning re lack of prototype for normalize_eval_seqn.
adds 8ed234f Added Devel::NYTProf::PgPLPerl module with docs. A bit of a hack but good enough to be useful.
adds e139a2a Rename subr_entry.completed to already_counted and use ++ instead of =1. In subr_entry_destroy warn and skip any attempt to raise subr_entry_ix.
adds c74a9eb subr_entry_setup() now always pushes a destructor onto the stack as a fallback incase the call is to an xsub that croaks. Determine name of sub being called before we enter it, so we have the name if it's an xsub that croaks (as a bonus we now see sub calls that die e.g. because the sub doesn't exist). Documented the findcaller option. Probably has rough edges, and perl-version sensitivities, but it's a good point to checkin.
adds 88240c2 Added sigexit option to enable a useable profile when the process exits due to a signals. Thanks to Andrew Sterling Hanenkamp for the seed of this idea.
adds 690165f Updates to the LIMITATIONS section
adds bff969b This test is sensitive to the perl version (calls appear from fid 3 or fid 4) I don't want to deal with that now so I'll sync to the results for the perl I'm using
adds 8f185f1 Generate list of slowops via the Opcode module. Add many more ops as slowops.
adds d16c7b0 Update to JIT 1.1.3 (which includes my earlier patches)
adds 7a6527d Switch to a rectangular style gradient effect (it's not quite right yet but I think it's better than the radial gradient)
adds 3917b21 Fixed zeroing of subr_entry! Fixed compiler warnings. Don't call resolve_sub_to_cv() for non-OP_ENTERSUB calls Disabled OP_SUBSTCONT fow now - needs special handling like OP_GOTO Synced affected tests. (All tests pass for the perl version I'm using - but some will fail on others)
adds 8b3b630 Added PRIVLIB_EXP and ARCHLIB_EXP attributes to profile data file. Used them to implement a sane $fileinfo->is_perl_std_lib method. Used is_perl_std_lib to remove called_by data for calls from std modules. Added NYTPROF_TEST_PROFPERLOPTS env var. Added $profile->attributes method. Hid PRIVLIB_EXP and ARCHLIB_EXP from dump output.
adds 5582349 Replaced old stdlib detection code with $fi->is_perl_std_lib calls.
adds 2d5d2a1 Added t/test62-subcaller1 Bumped VERSIONs ready for an early devel release (to flush out portability issues) [Anyone want to contribute DistZilla support?]
adds 2478646 Bumped more VERSIONs (though I should have bumpled to 3.00, d'oh) Updated MANIFEST (fix RT#50760)
adds 573d761 Fix t/22-readstream.t to (try to) use the same perl in the subprocess
adds 15ae164 Don't profile DB::_INIT and DB::finish_profile (only) because they cause test output (eg test8.rdt) to very depending on perl version.
adds 78d0fca Skip test60-subname for older perls because the call from example_xsub to will_die, made via call_sv(), doesn't get profiled on older perls
adds daf09db Polish up change not re sigexit option
adds 5d36f39 Added forkdepth option, plus tests and docs.
adds c91d630 Sync'd the test60-subname.rdt and test62-subcaller1.rdt test results I'd missed doing in the previous release.
adds dbf650e Provide a little more detail if deflate() fails (see RT#50851 https://rt.cpan.org/Ticket/Display.html?id=50851)
adds 8304802 Added emulation of gv_fetchfile_flags that null-terminates the string. (Probably cause of RT#49835 and string eval src being missing in some older perls)
adds 54c88ee Added note re Scope::Upper unwind() in LIMITATIONS section
adds 50106a0 Enable ARCHLIB_EXP to be undefined
adds 129f1b0 Tweak ARCHLIB_EXP comment and slowops Change note
adds 044d60e Tried to make t/30-util.t less prone to floating point issues (presumed to be the cause of http://www.nntp.perl.org/group/perl.cpan.testers/2009/07/msg4389798.html)
adds 853b790 Moved some $^P () settings into init_profiler. Renamed use_db_sub to opt_use_db_sub (will rename others later)
adds 1426762 Add perldb=N option to force certain PL_perldb values (undocumented as it's just for testing/emergency use) Added PL_perldb value as an attribute in the profile data file.
adds 04b74fe Fixed handling of slowops that exit via an exceptions. Tidied some code and logging. Resync'd affected test results.
adds edc5a7f Documented how goto &destination is profiled. Removed old items from LIMITATIONS and moved the section to a better place. Polished up the REPORTS section and gave each tool its own heading. Updated Changes.
adds 6c060c5 Polish up the docs Note current limitation re substcont opcode.
adds 0b95e7d Disabled profiling of require slowop. Fixed ref count problem with goto() profiling code. Fixed current_cv() when ix<0 and PL_curstackinfo isn't PERLSI_MAIN. Added subroutine depth tracking and included depth in main log messages. Added assertions to detect insanity sooner. Now passes the "profile perlcritic'ing Perl::Critic's own lib tree" test.
adds 0b5288e Resynced test62-subcaller1 results Fixed compiler warning. Noted things still todo in Changes
adds 029c7f2 Tried again to avoid (presumed) floating point issues like http://www.nntp.perl.org/group/perl.cpan.testers/2009/10/msg5789940.html
adds 73fa0b2 Fixed problems with profiling forks. Should fix http://www.nntp.perl.org/group/perl.cpan.testers/2009/10/msg5789927.html Added reporting of ZLIB_VERSION in the test output. Adopted the convention that non-error trace messages start with "~ " (only applied to trace level 1 and some level 2 so far)
adds 9f8bf0d Fix compiler warnings, mainly for perls built with -Duselongdouble (RT#51431)
adds b2d79e9 Update slowops list generation to match current state and document some issues
adds 9f292fe Removed rand & srand from slowops because it turnsout it's very hard to configure perl to use a random number generator that might block waiting for /dev/random
adds 1313ec0 Added tests for calls from sort() and s//sub()/e
adds e8b2d9d Fixed link to tablesorter css file
adds bcfd033 Updated ops for 5.10 (will need to add #ifdefs for earlier versions ) Removed rand and srand (because they'll never be slow enoh to care about because they don't use /dev/random) Added say and substcont Stubbed out OP_SUBSTCONT for this commit
adds a7c7666 Fix OP_SUBSTCONT. Yeah! Probably also fixes Scope::Upper::unwind. Double yeah! Replaced old naughty block_type[CxTYPE] array with a proper cx_block_type(cx) func with a switch statement.
adds ddfcc85 Add #ifdef for OP_SAY
adds 5237875 Added Devel::NYTProf::Run module with profile_this(src_code=>"...") function. Enabled run_test_group to not require any external test files. (Together they enable traditional style Test::More tests to be applied to source code without requiring external test files but still allowing multiple executions with combinations of NYTPROF env var settings. This provides an escape route from the tyranny of the dump-n-diff approach.)
adds 1fb5da0 Fixup handling of profile data file naming broken in previous commit.
adds f581bcb Move already_completed test out of slowop block so it'll also work for Scope::Upper's unwind. (Sadly Scope::Upper still has problems with NYTProf - I'm looking into it.)
adds eaab503 Reordered logic to not push the extra destructor until the end of the function and so no longer push the destructor for a substcont that's already left the scope.
adds 9e72413 Limit the damage when a confused NYTProf stack is detected. (So "PERL5OPT=-d:NYTProf prove" works for modules that include thread tests, like Scope::Upper, no longer aborts)
adds 5aa88b0 Fixed tortuous "goto into own sub that's been deleted and replaced" use-case used by Carp::Heavy. Thanks to ALEXMV for the bug report (RT#51149) and original tests (which I've edited).
adds f088580 No longer export do_foreach_env_combination as it wasn't being used. Allow tests to override, or add extra, NYTPROF env var option values. (Would be nice to enable adding combinations of options one day.)
adds fc58506 Added workaround for RT#50851 "deflate failed, error -5 (buffer error)"
adds 7dae813 Tweak NYTP_FILE_LARGE_BUFFER_SIZE for minor optimization of zipping.
adds eb18a3a Tweaked slowops.h generation. Added MANIFEST.SKIP.
adds 2b41293 Made trace first option in NYTPROF during tests, so other options get shown if trace is set. Made breakdown of test failures by option settings more visible in the test results. Added note that slowops that call subs currently appear as the caller in the call tree and that that's likely to change. Added tests for savesrc (using new simpler testing format).
adds dc5f132 Fixed extra newlines in trace message showing saved source code. Removed (single) requirement for Test::More 0.84. Document that NYTProf isn't multiplicity-safe.
adds 4ec63f0 Fixed chomping of newline in fid source code trace. Included fid id in 'source not available' fake source line and NYTP_FIDf_IS_FAKE fake source line. Fixed up edge cases in source code handling. Noted more things to test/consider/fix.
adds 2e1763f Replaced open my $fh, '|-', @perl with open my $fh, "| @perl" to fix windows "List form of pipe open not implemented" problem http://www.nntp.perl.org/group/perl.cpan.testers/2009/11/msg6046204.html
adds 6d899d4 No longer warn about each instance of a negative time for a sub call, just count and warn at the end. (The counting should really be done during the measurement, else occasional backward clock moves would be hidden by more common forward moves)
adds 3361a3d Offer some concrete help to user of xen with clock problems (http://www.nntp.perl.org/group/perl.cpan.testers/2009/11/msg6039168.html)
adds 0f9b2cb Be a little more prescriptive, and fix whitespace
adds 0e101da Fixed compiler warnings
adds a762767 Added listing of relevant env vars to t/00-load.t output
adds e53806a Adjust t/test60-subname to move the "exit xsub via exception" test into the middle. I suspect there's something wrong with the handling of that case, based on http://www.nntp.perl.org/group/perl.cpan.testers/2009/11/msg6035538.html http://www.nntp.perl.org/group/perl.cpan.testers/2009/11/msg6064226.html
adds a56e7ae Fixed example_xsub that was missing a PUSHMARK (causing occasional failing tests mentioned in previous commit) Added (void*) to args using %p format to keep gcc --pedantic happy
adds 3df3269 Added tests for CORE::GLOBAL::foo plus assorted data model methods (using the new extra_test_code & profile_this mechanisms) Replaced some remaining uses of fileinfo array indexing with method calls.
adds f288538 Skip a test if $] < 5.008009 or $] eq "5.010000"
adds 6329e3f Added t/40-savesrc.t missed from r914. Thanks Nicholas. Tweaked svn:ignore for t directory
adds 22b0b74 Pass in the length of the string to sub_pkg_filename_sv(), as we always have it available in the caller. This saves a strlen().
adds ae2114e Fixed file_line_range_of_sub to handle known subs with unknown file details, like UNIVERSAL::VERSION
adds 50150b5 Added test for implicit utf8 SWASHNEW calls from regex (currently coredumps) Factored out code used to generate summary of subr_entry for log messages.
adds d5183be Fixed t/test81-swash.t. Fails for perl >= 5.11.1.
adds 305fac5 Don't output a diff if it's the same as the previous env-variant of the same test. (To avoid [Output truncated after 50K] in cpan-testers reports.) Assorted other minor improvements.
adds eea0011 Fixed to build with later 5.9.x's, thanks to Nicholas Clark.
adds 9a4099b Added warning when reading a file with a minor version higher than expected.
adds dd26f06 Enable assertions.
adds 37317b9 Disabled savesrc=1 tests for perl 5.11.2 due to perl bug RT#70804
adds ea46ab2 Fixed dumb attempt to enable assertions. Added Makefile.PL option to enable 'hard' (non croak-if-PL_debug) assertions. Default the option true if $ENV{AUTOMATED_TESTING} is true. Default the option true for developers (use --noassert to disable).
adds a1042d9 Added mention of quiet=>$bool argument to new() method. Noted inability to merge profile data.
adds 0974e9a Added 'complete' attribute to indicate incomplete/truncated data to avoid false positive test on platforms that don't have compression, like http://www.nntp.perl.org/group/perl.cpan.testers/2009/12/msg6402850.html
adds 0a7806d Removed dofile from slowops for the same reasons as require. It's also the cause of of the SWASHNEW assertion failures like http://www.nntp.perl.org/group/perl.cpan.testers/2009/12/msg6409150.html
adds e27539b Protected some log messages from core dumps with corrupt data. Changed .subr_call_seqn from UV to long unsigned. Added fid:line to trace_level 3 sub entry log message. Added more detail to 'call has negative time' log message.
adds 9b8e855 Synced t/test12.rdt with removal of dofile from slowops in earlier commit.
adds ffc945c Added nameevals=0 and nameanonsubs=0 to make NYTProf less visible to code that may assume the default perl naming behaviour. (Such as perl's own test suite.) Added rough stab at detecting threading/multiplicity.
adds 8f8e04d Fixed "Assertion failed: (isGV_with_GP(_gvstash))" from perl's t/op/caller.t and t/op/ref.t
adds d825f4f Better handling (ignoring) of threads/multiplicity, (at least good enough to pass perls own thread tests).
adds 61e4e82 Fixed for perl's t/op/caller.t
adds 389d427 Fixed typo in comment.
adds 9a7735d Updated ppport.h
adds 0364f65 Updated with recommendations from ppport.h.
adds edd50b5 Added extra test that tickles an old perl bug. Currently fails.
adds 06a68b9 Add SPAGAIN after call_sv()s used to make callbacks. Without this, the stack can move under us, if one of our callers has to extend it.
adds 909f397 Correct the documentation for callback parameters for TIME_BLOCK and TIME_LINE for for_chunks. $ticks was given as the third parameter, when it's actually the first.
adds 4232c61 Revert r952. The documentation for TIME_BLOCK and TIME_LINE is correct and consistent with the *callback* code. However, the order of the callback's parameters differs from the order in the NYTProf file, hence the confusion.
adds c9b37f0 for_chunks SUB_CALLERS was not passing the callback the caller name. Added at the end of the list of parameters, to avoid breaking code relying on the existing order.
adds b4f5a6c Move calls to normalize_eval_seqn() after the callback runs, so that the callback gets the original filename(s). As its return value is now no longer used, normalize_eval_seqn() can become static void.
adds 65dea42 Added dot file for graph of "all inter-subroutine calls".
adds 112daf6 Added some notes & comments re handling of xsubs and opcodes that call back into perl
adds dd757e1 Convert several occurrences of 'in' to the parameter passed to the function. At some point the functions had been refactored to take an explicit file handle parameter, and that parameter is always 'in', hence why this had not been spotted.
adds d6f05ea Replacce NYTP_type_of_offset() with a macro when HAS_ZLIB is not defined.
adds 22b5933 Replace the common construction if (FILE_STATE(ofile) != NYTP_FILE_STDIO) { compressed_io_croak(...) } with a macro CROAK_IF_NOT_STDIO(...)
adds 81098df CROAK_IF_NOT_STDIO() can explicitly do nothing when HAS_ZLIB is not defined. (Other conditional code means that it will do nothing.)
adds 646b2e5 compressed_io_croak() is only needed when HAS_ZLIB is defined.
adds 0742efc Change NYTP_close() from returning pass/fail to returning pass/errno.
adds f5a1d41 Move the logging out of NYTP_close() into its callers. This will make it easier to refactor the IO functions into a separate file.
adds f1dd11b Move all NYTP_* file handling functions into FileHandle.xs
adds 18fc938 Create a package Devel::NYTProf::FileHandle which can open and close NYYProf's file handles.
adds 68fce78 Refactor output_int() and output_tag_int() to take an explict file handle.
adds cebd646 Refactor output_nv() to take an explict file handle.
adds febc6aa Refactor output_str() to take an explict file handle.
adds 53c1f6c Add methods write(), output_int(), output_nv() and output_str() to Devel::NYTProf::FileHandle. It's now possible to write out a profile file from Perl.
adds eff47b7 Refactor Devel::NYTProf::ReadStream::output_iv() to take a list of values.
adds eba794d Refactor Devel::NYTProf::ReadStream::output_nv() to take a list of values.
adds c912bd3 A tool for merging NYTProf profile files. This prototype can't merge yet.
adds 27c0b0b An initial implementation of FID remapping.
adds b5e3491 profiler_duration needs to sum over all PIDs run, not just the last PID seen.
adds 6fca976 Merge 2 (or more) NYTProf output files. Unpolished - error checking, sanity checking and tests not present yet.
adds b3136e9 Give thanks where it's due!
adds d5682ba Added use of ppport.h to give compatibility to older perls
adds 483f31e Added $VERSION cross-check (I guess we really ought to use .PL files) Added --verbose option. Tweaked usage() usage and text. Added check for open() failing. Optimized the dispatcher a little.
adds 2ac8336 Added crude testing of nytprofmerge. For every test with a .rdt file the .rdt file is checked normally and then checked again using data run though nytprofmerge. This 'null merge' ought to still generate the same data dump as the .rdt file. The easiest way to enable the test is to set the NYTPROF_TEST_MERGERDT env var.
adds 7c8e600 Fix test count in t/test82-stress.t
adds 86babfa Added chunk of #ifdef-out code showing the sad state of the bug hunt relating to t/test82-stress.t Tweaked a few comments. Changed the behaviour on "panic: stack is confused" logic to be less invasive. Made write_sub_callers handle non-hash-ref entries in the sub_callers_hv hash (just to make debugging test82-stress easier).
adds cead4db Limitations docs: Two steps forward, one step back. Removed Scope::Upper unwind and substcont limitations which are now fixed. Added "Freed values in @_ may be mutated"
adds aa28f85 Moved t/test82-stress.t into xt directory
adds ecb10af BEGIN's are now recorded as BEGIN at line to make them unique. (Been meaning to do this for ages - it makes a big difference.) Refactored parsing of line numbers from %DBsub values into a new sub.
adds aa656b2 Tweaked BEGIN at line test to cater for pre 5.8.9 and noted limitation in Changes.
adds 20b7506 Noted in Limitations the lack of BEGIN/CHECK/INIT/END block calls for older perls.
adds 250bddb Added a DATA COLLECTION AND INTERPRETATION section to the docs. Just covers "Calls from XSUBs and Opcodes" for now.
adds 9257a57 Added recommended perl version info to docs. Removed micro char likely to cause encoding issues
adds 215996c Fixed "Total Time" in reports to be sanely formatted.
adds 3f64bb9 Fixed avg/call time shown for subs called recursively. Added recitime.
adds 5478109 Don't build an unusable treemap if JSON::Any not install. Give reader a hint.
adds 3ab63e6 Actually add an entry to the fid mapping table when a given file is seen again. Map the fid before checking the %seen_subs lookup table. confess() if no fid mapping is found, when one is expected.
adds f54cf8c In addition to the regular fid mapping, track the mapping if fids for all evals at the same point in different files are mapped to the same fids. This allows the code to avoid issuing duplicated SUB_INFO sections when an eval is used to define a subroutine.
adds bdc4225 Need to map the fids for TIME_BLOCK and TIME_LINE
adds 97008cb Track where related evals in different files (re)define the same subroutine, and ensure that the profiling results are merged for these cases.
adds b2999c8 Cop out of binding a key to move up a level in the treemap - just tell users to reload the page.
adds bc67198 There comes a time when you've just gott'a call it "Done!"
adds 402c16a Added documentation to nytprofcg. Minor updates to nytprofcsv documentation.
adds 6353710 Fixed version number in nytprofmerge. Added documentation to nytprofmerge RT#53098
adds 1efb86a Fixed typos in docs thanks to Jonathan Yu. RT#53146
adds 824da8f Removed use of vfscanf (which broke on windows) http://www.nntp.perl.org/group/perl.cpan.testers/2009/12/msg6592296.html
adds 2ff59c2 Removed some stray tabs from FileHandle.xs. Simplified the (outdated and inaccurate) header text to refer to NYTProf.pm
adds e16bef8 Updated NYTProf docs, including noting major contributors, and referencing nytprofmerge.
adds 63584bd 3.01, as released (forgot to check this in - D'oh!)
adds a5b8926 Tweak t/42-global.t to shed light on http://www.nntp.perl.org/group/perl.cpan.testers/2009/12/msg6603296.html
adds bc9145a Include more %Config details in t/00-load.t output (re http://www.nntp.perl.org/group/perl.cpan.testers/2009/12/msg6603296.html) Updated NYTProf docs to include a note about timing on Windows.
adds 5a1a938 Added docs section on making NYTProf faster. Added links re clock_gettime clone for OS X into HACKING.
adds 162b62d Changed subroutine profiler to be slightly more efficient. (Even a simple sprintf is surprisingly expensive.)
adds f8a823f Added high-resolution (100ns) timer for Mac OS X thanks to Markus Peter.
adds 299bada Fixed minor typo. Tweaked whitespace.
adds 6529e01 Fixed handling of usecputime=1 option. (Fixed one problem but results are *10 on my mac. Still needs tests.)
adds d475e02 In pkg_fids_hv, use the SV type to track whether this is a new entry, and SvOK() [ie undef or not] to track whether we yet have a filename. Previously, SvTRUE() was used as the flag, which is computationally more expensive, and an empty string used as the tracker. However, the empty string was initialised by copying PL_sv_no, which would have the side effect of upgrading every SV to SVt_PVNV, which uses more memory than SVt_PV.
adds 77bbdd0 Add a heuristic to detect and ignore subroutine entries in %DB::sub with illegal line ranges. This avoids XSUBs in DynaLoader sometimes erroneously being associated with modules that happen to add 'lvalue' attributes at BOOT: time.
adds d1732e2 Use sv_setpvs() instead of sv_setpv() when possible.
adds 35490de Avoid two possible "value computed is not used" warnings from the C compiler.
adds 6e4cd09 A slightly tighter implementation normalize_eval_seqn(), which assumes that memchr() and memmove() are faster than C loops, and avoids moving strings if the edit leaves the string with the same length.
adds 5524101 When iterating %DB::sub to find filenames for packages, skip over any entry where the "filename" is one generated by eval, or re_eval.
adds a1c0f46 We know the length of the text key of an attribute, so use it rather than relying on implicit strlen()s.
adds 3e3d411 Change store_attrib_sv() to take the length of the key, as we always know it. This avoids the need to edit the string read from the file to '\0' terminate it.
adds f6f4bf6 Replacing strEQ() of "-" and "-e" with character based checks allows gcc to generate terser code.
adds 4899ba3 The hashing code knows the lengths of the strings passed in, so can use memEQ() and memcpy().
adds 663c89d strtol() with a base of 0 is equivalent to the replaced code.
adds 8ae0e4b In fid_is_pmc(), use only 1 temporary SV, and avoid *printf format parsing.
adds 7192f88 If src not available then pad with blank lines so at least the data will be shown. Updated Changes.
adds 5070c99 Removed (old, undocumented) zero option.
adds e2811e6 Fix off-by-one in recent src-missing change
adds 7ef57c3 Sub profiler doesn't consider usecputime so shoudn't use ticks_per_sec. Note the limitation in the docs. (Not worth fixing till clocks get abstracted.)
adds f6308c2 Swap from char pointers to char arrays to avoid two strlen()s on constants.
adds 3298b5b In incr_sub_inclusive_time(), copy a '\0' instead of explicitly writing one.
adds 4b15c99 In incr_sub_inclusive_time(), avoid a strlen() by remembering a pointer to the end of the assembled string.
adds 7b9b58a strlen(src) is already known, so no need to re-compute it.
adds 931cb67 In pp_subcall_profiler(), a "longhand" check for "DB" produces terser object code than a call to strcmp(). Also make the comparison with "_INIT" avoid a strcmp().
adds c8b0e4c In append_linenum_to_begin(), avoid using *printf functions to build the sub's full name. The old code was specially sub-optimal because it used %s to interpolate the subroutine's name, for a code path where the subroutine's name was always "BEGIN".
adds 59f98b2 In append_linenum_to_begin(), avoid making 2 identical calls to *printf() like formatting routines, by copying the result of the first call.
adds ddf0e54 Skip this test if perl was configured to disable .pmc files.
adds 6c66622 Avoid calls to *printf functions when the string is fixed or known.
adds a42609d Fix a bug in the FID folding in nytprofmerge.
adds 8e0bd7c Add a cache for CORE:$opname, to save repeatedly regenerating the same SVs.
adds 275ce18 Use atoi() rather than SvUV() to get ticks_per_sec.
adds 88c612e When reading NYTP_TAG_ATTRIBUTE with a callback, assign directly to cb_args[2] rather than assigning to value_sv and then copying that SV's contents. As attr_hv is later discarded if there is a callback, don't waste effort setting it.
adds 858af55 Fix an off-by-two error in normalize_eval_seqn() introduced by r1018.
adds 51a2a65 Fix length calculation error if normalize_eval_seqn() finds a second eval pattern after editing a first with a sequence number with 2 or more digits.
adds c9ebc6b Convert NYTProf_gets() to dynamically resize the read buffer, so that it can read arbitrary length attributes and comments.
adds 94b2b8e When merging, enforce identical profile file attributes where appropriate. Write out the minimum seen value for 'basetime', and concatenate 'application'.
adds 11f503f In the merged profile, count the number of times each program was profiled, rather than listing its name that many times. This makes for a more readable result when you're merging dozens of profiles.
adds 8c54fd2 When merging, strip out the comment about "Compressed ... with zlib", as it's not true for the file we write.
adds 7d1f045 Missing a space before 'and'.
adds 4a6deed Switch to using a typemap for Devel::NYTProf::FileHandle.
adds 985ec40 Improve NYTP_gets() so that it will also work on compressed input streams.
adds 456ec65 Add Devel::NYTProf::FileHandle::start_deflate.
adds 52975a3 In nytprofmerge, enable deflation on output if the input files are deflated.
adds 608a7b7 Added a test for RT#54600
adds 976de51 Avoid tripping over $! bug http://rt.perl.org/rt3/Ticket/Display.html?id=72850
adds fc4d951 Better test for RT#54600
adds 6b72933 Add casts and consts to get NYTProf to build (and pass tests) under g++.
adds 485dc35 Convert char *s to const char *s to eliminate g++ deprecation warnings.
adds 0cd7241 Add cast to remove g++ warning about mixing enums and non-enums in a conditional.
adds 632044a In load_profile_data_from_stream(), avoid calling sprintf() if we don't need the result because we're taking the callback code path.
adds 158e823 Fix a bug in the regexp of r1048 - we weren't actually matching the comment.
adds 86bff71 In load_profile_data_from_stream, in the time_line and time_block handler, merge the two places with conditional code to read block_line_num and sub_line_num into one.
adds 366408a load_profile_data_from_stream() was failing to free buffer.
adds e84a386 Don't profile goto \&sub if subr_entry_ix==0. Fixes RT#54600 (I suspect there could be other cases where the profiler didn't record entry to the sub that invokes the goto but subr_entry_ix!=0. In those cases the caller of the goto'd sub will appear to the most recently profiled caller.)
adds 20c6fb3 Added cputime test
adds 95bbdfb Updated cputime time test to better identify when cputime is really measuring realtime (which it is on OS X at the moment)
adds d71180a Ensure subprocess perl has same libs as us (e.g., if we were run with perl -Mblib)
adds 227f2cb Minor tweaks to test harness.
adds d913344 Rip out separate user & system cputime attributes as we're moving to a "take a single measurement" model at the moment (which may later, much later, get generalised into "select a list of clocks to use for this profile")
adds 0a36bba Implemented usecputime=1 support for subroutine profiler. Added 'conjectural terminology' re abstract clocks and measures.
adds 08105de Removed $fi->is_perl_std_lib and addressed the underlying need another way. Fixes RT#54204.
adds 611d225 Fixed up log errors and compiler warnings from r1069.
adds ca6b468 Sort the sortable tables on-load so the sorted column gets a sort arrow. RT#47924
adds ddb56a8 Show "<- Index" backlink on all pages except the main index page. Updated Changes.
adds 1df1a01 Only show excl_time in treemap mouseover box if different to incl_time.
adds 64fad7a Prep for 3.02 (actually 3.01_90) release
adds 75594e6 Restore file format compatibility with previous release..
adds 560e948 Avoided repeat reads from DATA in t/42-global.t Made t/61-cputime.t more chatty and moved code to __DATA__
adds a50b38d Use PL_clocktick instead of CLK_TCK http://www.cpantesters.org/cpan/report/6849702
adds 0a59677 Make t/61-cputime more verbose, especially on freebsd re http://www.cpantesters.org/cpan/report/6854616
adds 8b1ebb9 More refinements to shed light on freebsd test failures like http://www.cpantesters.org/cpan/report/6859183
adds da009d4 Fix Changes title (RT#54912) and tweak release details.
adds 3905a49 Note that lvalue subroutines aren't profiled when using use_db_sub=1
adds 00f6f45 Whitespace tweaks in NYTProf.xs. Show d_sysconf in t/00-load. Show ticks_per_sec in t/61-cputime.
adds 9662975 Count system cpu time as well as user time in the loop in t/61-cputime.t. Allow a 1% error in the profiled CPU time.
adds bda1e92 Fix so $cpu1 on entry to foo() is accurate. (Test was failing on OS X with '0.39'>='0.396'. Maybe the * 0.99 for freebsd is no longer needed.)
adds 4bfcd69 Update for _96 dev release - hopefully the last!
adds a797f09 Don't generate index-subs-incl.html as it's not needed or referenced. RT#54895
adds b5d1162 Added some notes re stub DB::sub sub.
adds 95160a0 Added Makefile.PL options to control use of zlib/clock_gettime/machtime. Minor grammar tweak in NYTProf docs.
adds c1549fe Removed Devel::NYTProf::PgPLPerl module. That's now a separate PostgreSQL::PLPerl::NYTProf distribution.
adds 98c6c18 Made 'No file line range data for sub' warning less scary
adds 12167ce Make trace log for fids more informative
adds 208f82f Tweaked Changes for 3.02 release. (Sadly I only noticed this was needed just after the 3.02 release. Ho hum.)
adds 2a47471 Pass the input file as an argument to read_int(), read_nv() and read_str().
adds 5e8ac12 Abstract writing comments into NYTP_write_comment().
adds 7185ea5 Add a wrapper for NYTP_write_comment and use it from nytprofmerge.
adds 7feed72 Abstract writing string attribute values into NYTP_write_attribute_string().
adds e371276 Add a wrapper for NYTP_write_attribute_string and use it from nytprofmerge.
adds c257605 Abstract writing signed attribute values into NYTP_write_attribute_signed().
adds 30ef375 Abstract writing unsigned attribute values into NYTP_write_attribute_unsigned().
adds 59addce Convert output_tag_int, output_nv and output_str to return the written count.
adds 502faec Abstract writing process start into NYTP_write_process_start().
adds 6e597ba Add a wrapper for NYTP_write_process_start and use it from nytprofmerge.
adds 1fcf648 Abstract writing process end into NYTP_write_process_end().
adds 14aca3b Abstract writing a new file ID into NYTP_write_new_fid().
adds cc96a7a Add a wrapper for NYTP_write_new_fid and use it from nytprofmerge.
adds d3870e0 Abstract writing profile times into NYTP_write_time_block() and NYTP_write_time_line().
adds 734d2c8 Add wrappers for NYTP_write_time_block and NYTP_write_time_line, and use them from nytprofmerge.
adds ac70b34 Abstract writing sub info into NYTP_write_sub_info(), wrap it and use it nytprofmerge.
adds 941593e Convert output_uv_from_av() and output_nv_from_av() to uv_from_av() and uv_from_nv(), moving the output functionality outwards to their caller, write_sub_callers().
adds 845d633 Avoid returning 0 from output_str() when successfully writing an empty string. The correct return value is 1, for the 1 octet used for the tag.
adds 16e2bfa Abstract writing sub caller info into NYTP_write_sub_callers().
adds 56e66f1 Add a wrapper for NYTP_write_sub_callers and use it from nytprofmerge.
adds 2589db8 Abstract writing source lines info into NYTP_write_src_line(), wrap it and use it from nytprofmerge.
adds 191e161 Move output_tag_int(), output_nv() and output_str() to FileHandle.xs from NYTProf.xs, and make them static. Remove their prototypes from NYTProf.h.
adds dde6c79 Abstract writing a discount marker into NYTP_write_discount(), add a wrapper, and use it from nytprofmerge.
adds 7e3b100 Abstract writing the file header into NYTP_write_header(), add a wrapper and use it from nytprofmerge.
adds 50155d8 Add NYTP_start_deflate_write_tag_comment(), which abstracts writing out the comment with the compression details (only available in the XS code), the "start compression" tag, and starts compression. Use this from nytprofmerge, which removes the finale $out->write(...) call. Now the output file format is completely wrapped in XS.
adds fe8d971 Remove the XS wrappers for output_int(), output_nv() and output_str().
adds 7de4cb6 Start to convert load_profile_data_from_stream() to callbacks, by creating a state structure, and moving discount handling to a new function load_discount_callback().
adds 752907f Move source line handling to a new function load_src_line_callback().
adds cb65a21 Move sub info handling to a new function load_sub_info_callback().
adds bf2ed5d Move pid start handling into a new function load_pid_start_callback().
adds 18b62ad Move pid end handling into a new function load_pid_end_callback().
adds 1146357 Move attribute handling into a new function load_attribute_callback().
adds 35ca638 Move sub callers handling into a new function load_sub_callers_callback().
adds ba3429a Move new fid handling into a new function load_new_fid_callback().
adds 3a527df Move time line and time block handling into a new function load_time_callback().
adds 09f81c1 Start to break Perl callback handling out, by moving new fid callback processing into a new function load_perl_callback().
adds 0b46258 Generalise the callback framework, and use it to also implement src line processing.
adds 1b93f41 Move sub info processing into load_perl_callback().
adds f828e61 Move sub callers processing into load_perl_callback().
adds e5b736d Move pid start processing into load_perl_callback().
adds a1093c9 Move pid end processing into load_perl_callback().
adds afef246 Move attribute processing into load_perl_callback().
adds 6c00847 Move comment processing into load_perl_callback().
adds c706fce Move discount and start deflate processing into load_perl_callback().
adds 1dff089 Move time block and time line processing into load_perl_callback().
adds 8d5e76f Move file version processing into the load_perl_callback(). It isn't actually a file tag, but the code is simpler if it is treated as one.
adds 828c4af Move cb_args into the (unified) state structure. Build strings for all tags for the Perl callback ahead of time, and store them in the state structure.
adds 855c759 Convert load_time_callback() to take an enum tag, rather than a raw char.
adds 7b219fb Convert all the loader callback functions to take an enum for the tag immediately after the state. This makes them all identical, and identical to load_perl_callback().
adds 780b1be Move input_chunk_seqn into the loader state. As it is the only thing that the callback driver needs to access, rework the loader state as Loader_state_base (containing just it), and Loader_state_merged, which is the state as needed by both families of callbacks. All the callback functions need to take a Loader_state_base as their first argument now.
adds a66a52a Convert all loader tag processing to table driven callbacks.
adds 445db6f Move input_chunk_seqn_sv into Loader_state_merged;
adds 5554aac Split apart profile loading into load_profile_to_hv() and load_profile_to_callback(), with Loader_state_merged split into Loader_state_profiler and Loader_state_callback. This makes load_profile_data_from_stream() totally callback agnostic.
adds c3d0835 Pass the input file handle from load_profile_data_from_file() down into load_profile_to_callback(), load_profile_to_hv(), and load_profile_data_from_stream(). Eliminate the static variable 'in';
adds 72e9a01 If a callback is passed, move the validity check on the type of reference from pp_entersub (in the core) out to load_profile_to_callback. This allows us to dereference the passed in reference once, and store the CV in Loader_state_callback, avoiding a check and dereference on every callback call.
adds 9a084b9 Move callback type checking into load_profile_to_callback().
adds 88c1307 Convert nytprofmerge to using Devel::NYTProf::Data->new() directly, instead of calling Devel::NYTProf::ReadStream::for_chunks().
adds a3d9cda Allow the callback to load_profile_data_from_file() to also be a hash reference. For a hash reference, the tag name is looked up, with the value being a callback subroutine to dispatch to. If there is no entry for the tag, a lookup is made with an empty string key for a default subroutine. If there is no default, then no callback is made for that tag.
adds 0bac7ce No need to set $. to 0 in load_profile_to_callback(), as it's always set in load_perl_callback() before calling into Perl space.
adds 30348a2 NYTP_start_deflate_write_tag_comment() needs to be wrapped with #ifdef HAS_ZLIB
adds 84528c8 In the BOOT: section, replace the long run of calls to newCONSTSUB() that set IV constants with a loop iterating over structure containing the constants and their names. This reduces the object size by about 2K (gcc, x86, -Os).
adds b185a58 Replace if (FILE_STATE(ifile) != NYTP_FILE_STDIO) with CROAK_IF_NOT_STDIO(...)
adds 04b0ace Prep for dev release. Bumped version. Added Changes.
adds 82d4fc4 Perl built with the -DUSE_SITECUSTOMIZE option will execute an additional BEGIN block during initialization that will define the additional main::BEGIN at 0 sub.
adds 9dafa86 Fix type inconsistencies
adds f987a56 Add casts for 32/64 bit mismatches
adds 1d71e1c More 32/64-bit adjustments
adds 0131ad1 Credit where it's due. Thanks Jan.
adds f152a54 Reverted r1158. More general approach to follow.
adds 603b96b Added skip_sitecustomize option to profile_this() and used it in tests.
adds 0bea99b Added test t/70-subname using Sub::Name. Tweaked t/61-cputime to be less verbose.
adds 63d355d Added mechanism to help test if NYTProf.xs saves/restores errno (re t/50-errno.t)
adds ad33863 Tweak log levels of some messages
adds cbc3939 XSUB.h is supposed to redefine fgets under PERL_IMPLICIT_SYS, but doesn't
adds bf2634f Added Devel::NYTProf::Test::set_errno and used as probe in t/50-errno.t.
adds 8a3c158 Using SQLite for reporting on profile data might be a good direction...
adds 8629590 Tweak Changes for another dev release
adds 2e644e9 Updated HACKING file in various directions.
adds c91bfea There shall be only one plan per test file
adds 7ff0c41 Need string form of eval() to defer execution of use() until runtime
adds b82e40c Enabled savesrc=1 by default. Made 'read string' log less noisy. Tweaked some code indentation.
adds 43daae8 Tweaked some trace levels
adds 0b851e4 Added evals=N option as part of ongoing work on string evals. Added NYTP_*i_elements for NYTP_FIDi NYTP_SIi and NYTP_SCi.
adds d6f09fe Significant changes to support profile reporting on string evals.
adds 6efc7d8 Corrected typos in nytprofhtml docs thanks to chocolate at cpan.org
adds 82ab8be Some more nails in the coffin of ::Reader.
adds c1ca9c8 Skip sequences of blank lines. (It turns out that perl doesn't save chunks of POD into the internal array that savesrc uses. So pod chunks leave big ugly blank sections of reports. They're now collapsed into a single line with "- -" as the line number.) More ::Reader reductions. Don't show file-has-been-modified warning if using savesrc.
adds 47a4788 More major work on string eval support. This is now working well in the ideal simple case (a modern perl version with NYTPROF_TEST_ONE=1). Needs assorted polishing of rough edges/cases. For example, code that does thousands of evals will generate many thousands of html files. Needs: - Handle savesrc being off and/or old perl versions. - Merge eval calls from a given line that have identical src - Perhaps add option to merge evals that don't define subs. The data mod [...]
adds fc2d59a Make incomplete profile message more consistent and add more details to the docs.
adds 482a389 Added docs about POSIX::_exit
adds 9418d3a Assorted work towards string eval support plus collateral tweaks. new() now returns undef when using callbacks. ::SubInfo normalize_for_test normalizes the sub caller line number for calls from AutoLoader and Exporter. FileInfo's can be 'nullified' to make them vanish. Tests pass, though there are some stray debug warns lying around still.
adds 1926f3a Fix ::Reader handling of subdef_info and cleanup the code. Write html report from 'perl t/foo.t --open' to /tmp so it's not auto-deleted.
adds e613c7d Added collapsing of 'uninteresting' sibling string evals. Instead of deleting all the evals, one becomes a merge of the others.
adds 6295876 Delete /tmp/ report dir contents before writing new one from .t --open Made t/test09.p usefully slower. Added note to HACKING re using sub profiler to time string evals, plus adding meta data to csv output to aid testing. Added cache method to FileInfo to complement meta. Changed _sum_of_line_time_data to only use line-level times as a fix for handling evals. Assorted reporting polish.
adds e445037 More work on merging of string evals, including editing of sub called-by data (which we have to do else limited merging wouldn't be viable due to calls to slowops etc).
adds 00fa46c Make eval dump info more descrptive. Sync golden test results
adds dae8740 Refine collapsing of evals to be more useful more often. Fix reporting of xsub timings that got broken along the way. Add separator line between main source code and xsub listing. Fix blank line skipping to not skip past lines that are blank (e.g., because we don't have source) but do have data to be reported. Fix html document title that got broken along the way.
adds c5fc586 Delete some old code. Disable some debugging.
adds 92034f6 Added automatic detection of calls to POSIX::_exit() by the sub profiler so finish_profile() gets called and a usable profile is produced. Added posix_exit=1 option to do the same thing (in a different way) when the sub profiler is not beeing used (i.e., subs=0).
adds 1f5480a Prep for an alpha dev release
adds 6ea79f0 Add a pointer cast to restore building with a C++ compiler.
adds ffcfbf7 Fix grammar error.
adds ad5c560 Make t/10-run.t less likely to fail due to low resolution clocks. Allow t/lib/NYTProfTest.pm to find scripts in bin if blib doesn't exist.
adds 4a7122b Assorted refactorings and cleanup.
adds bd9d1fb More string eval related polishing.
adds 67b16fe Added docs and tests for string eval collapsing. Assorted related code polishing.
adds f14a535 Fix warning: comparison is always false due to limited range of data type
adds 2fb9667 Avoid dying when merging evals if any have no line_time_data.
adds f0109f9 Write compression details comment on one line at end of file.
adds 790b520 Made it easy to disable run-time MULTIPLICITY sanity check if needed. Tweaked statement profiler trace and indented it. Tweaked some other trace output to add some more details.
adds 4e4bc59 Ignore 0's in calculate_median_absolute_deviation of file table on index page. Fix 'unaccounted for' note on Total line of file table to no longer blame string evals for any imbalance. Be less sensitive about time imbalances.
adds 87fb2e2 Restore sorting of jump-to-filename drop-down.
adds a442854 Added parent filename to collapsing-sibling-evals trace message.
adds 3c6a772 Finally worked out the secret to profiling mod_perl2 vhosts that use +Parent or +Clone.
adds 5b315e7 No longer normalise eval sequence numbers to 0 on loading a profile. Normalise to 0 when dumping data for (most) tests. Tweak wording of negative time warnings. Use perl -f in NYTProfTest to skip sitecustomize.pl. Updated and reorganized Changes file entry.
adds f31258c Update docs for savesrc option and string eval processing. Tweaks to HACKING.
adds 5819afc Only use perl -f when it's valid. Tweak HACKING.
adds 0f3555d Factor out handling of $this_perl and usesitecustomize -f into new perl_command_words sub.
adds 97d5f5a I'd missed another place where eval sequence numbers were normalized.
adds a39e646 Added CXt_LOOP to cx_block_type and the ability to show the int value for unknown types.
adds 2e1401d Changed test24-strevalc.p so it's not sensitive to the leave option.
adds 305af6a #ifdef'd CXt_LOOP and added a comment. Removed a stray debug warn.
adds f1a1cf3 Tweak to be more likely to get a diff from test errors on windows (eg http://www.cpantesters.org/cpan/report/7210232 )
adds e95bc80 Don't bother checking for >0 time for t/10-run.t as it's not reliable. Also restore its role as a regression test for RT#50851
adds 426abcb Avoid compiler warning
adds b1294f5 Oops, forgot to static the buffer in cx_block_type()
adds 1d8f6b9 Fixed rec_depth in callbacks to be unsigned int not UV (which broke sub_caller callback on 64bit platforms). I only noticed it because of an uninit warning in http://www.cpantesters.org/cpan/report/7211002. Added tests.
adds e1407fc Another thought for HACKING
adds 1d6fb7c Allow heuristic that handles assignment of xsubs to source files to consider string evals (but still prefer non-evals is any). Only set NYTP_FIDf_HAS_SRC if GvAV(gv_fetchfile_flags()) is not empty. Bail out of looking for a cop earlier - it never worked well. Tweaked trace levels, again. Fixed href_to_sub to handle xsubs in a more useful way.
adds 23fdd68 Tweak trace level. Don't give 'already associated with package' message if the alternative is an eval.
adds cd89f57 Add way to disable 'extra tests'.
adds 9fefea9 Hack test to make stable across different option settings. Major kudos to anyone who can workout why this change: -eval "sub sub$_ { 1 }; 1;1;" for (1..10); +eval "sub sub$_ { 1 }; 1;" for (1..10); makes the test fail (for some option settings). Something strange seems to happen with sub8! I'm using v5.12.1-RC1.
adds 3b88b06 Push the call to finish_profile() onto the END of PL_endav at END time, rather than INIT time. This makes it even more likely to be called last.
adds 0e07ba0 Run finish_profile() from CHECK, not END when perl is invoked with -c.
adds c133394 Multiple BEGINs (e.g., use) on the same line get distinct names
adds 8027ff2 Tweaked 'sibling evals' trace message.
adds e766fdf Uh. Still battling mod_perl2 PerlOptions +Parent issues.
adds 420a9d2 Avoid segv with mod_perl2. Not sure of root cause but removing the needless END in Devel/NYTProf/Apache.pm. Vivify PL_*av before use. Added code to call finish_profile immediarely from CHECK/END if desired. No longer uses old _finish alias for finish_profile in Devel/NYTProf/Apache.pm.
adds 7133932 Include app name in title of index page.
adds 12d0c54 Set endatexit and addpid options in Apache.pm.
adds 987183f Update Changes and add item to Troubleshooting section.
adds d0ccaba Added explicit NYTP_FIDf_IS_EVAL flag. Use filename_is_eval() where appropriate. Added fid flags to 'has unknown invoking fid' warning.
adds 1c49a5a Moved subs_defined_in_file(subs_defined_in_file=1) logic into new subs_defined_in_file_by_line method. Changed srclines_array to never invent dummy src lines (eg NYTP_FIDf_IS_FAKE) For files with no source ::Reader now sufficient generates blank lines to cover the profile data.
adds c315d83 Add note about DBI's xsub call optimization
adds 4184e6a Fix filename_is_eval to allow "(eval N)" and not require the trailing "[...]" Sync tests after recent changes.
adds fdc1aad Add more detail of NYTPROF setting combinations when tests fail.
adds bcceeb2 Tweaked index page html title and Changes file.
adds ddbab85 Drop unneeded trace message
adds a4408ad Shuffle order that NYTPROF option combinations are tested.
adds 63f3577 Dodge option sensitivity in t/test51-enable by avoiding string evals.
adds 7c87e87 Better handling of profile data for line 0 (ie data that we couldn't associate with a line). Now shows up as an extra first line of the report.
adds 56b27cd Assorted trace tweaks.
adds 9f23761 Fix and simplify padding of source lines
adds 9e85ffa Optimize fmt_fid_flags.
adds ed56181 More thoughts for HACKING
adds 88c40d7 Added NEED_my_strlcat
adds 2c4e5bb Move subs that were called but have no filename (eg xsubs in packages that don't have any profiled perl code) and assign them to fid 1 (typically the main script).
adds 96d033d Prep for 4.00, finally!
adds 7f6b0c6 Disable some stray debug.
adds f8adf0b Make the xen warnings stand out more.
adds 1c71316 Note what still needs doing
adds 6a5fda6 Restore use of normalize_eval_seqn for subs (ie anon) but not filenames (ie eval).
adds 7086a17 Update Devel::NYTProf::ReadStream to describe only version 4.0 of the file format.
adds b7cace7 Make subinfo dump (a little) easier to read
adds 3d754fb Remove two "spare" NVs from the sub_callers entries in the profile file.
adds 48cdf2a Remove the "extra items" count the sub_info entries in the profile file.
adds c8b94c5 Remove $eval_fid and $eval_line from the callbacks for time_block and time_line.
adds 6d6b552 Revert to disabling normalizing eval numbers - subs much be kept distinct and merged later.
adds 41398f0 Allow collapse of sibling evals that have sub definitions (will only happen within a group that has identical src_digest which means the src really is identical, in which case the src of the subs will also be, or there's no src code, in which case we don't mind merging subs because the report for that fid will be fairly useless anyway). What's missing now is renaming of ANON subs. All this stuff is way too painful :(
adds f93482b Bump NYTP_FILE_MAJOR_VERSION
adds f97a480 Fix the data format version check
adds a6ca6c8 Revert to disabling normalizing eval numbers - subs much be kept distinct and merged later.
adds d0b0280 Updated Changes, noted outstanding issues. Added item to HACKING.
adds 6a54f11 This now, finally, seems to do-the-right-thing for e.g. anon-subs that get merged when the string evals that create them get merged. NYTProf data model hacking is beyond painful! On the plus side, a profile of perlcritic is now usable because the thousands of string evals defining anon subs in PPI::Node::_wanted, now get collapsed into just a few different evals that have distinct source code (4196->4 in my case), and the thousands of anon subs also get collapsed (to [...]
adds baef436 Remove code for old 'merged subs have array of names' logic. Simplify some other code.
adds a52d4ad Change some counters from int to UV.
adds fa57edc Add failing test showing problem with eval/anon merging.
adds 115a92a Extensions to other tests
adds 2a8ce1d Limit impact on reports from outstanding eval/anon merge bug. Make it easier to disable graph generation.
adds f831d54 Add Devel::NYTProf::Util::trace_level function.
adds b8a7ba6 Replate $trace env var hack with new trace_level function.
adds cefe2ea Fix test count.
adds 1a28d8e Finally escaped the eval/anon merging tar-pit by giving subinfo and fileinfo their own copies of the subcallinfo data instead of sharing the same one! That's a tiny change in NYTProf.xs. The rest of this is collateral hacking.
adds d2fa58c More notes re "Unable to determine line number" from 'preamble' in toke.c
adds 9f89fe4 Bump the PL_scopestack_ix fudge for the "Unable to determine line number" warning. (I guess 5.12 has a slightly higher PL_scopestack_ix)
adds 5037fcc Add $fi->sibling_evals method and use to improve report output. Including generating links to 'sibling evals'. Fix compiled warning.
adds 42c2623 Document collapsing of anon subs
adds 8889118 Fix case where eval has both merged and unmerged siblings. Improve presentation of 'times include %d call%s to %d sub%s defined herein'
adds 2760937 Use 'merge' in docs instead of 'collapse' to be consistent with the reports.
adds 8879fb8 Add note to subs that have been merged
adds f4b7405 Doc updates, including link to updated example report.
adds c265397 Only run mk_report_separator_line is there's something to follow. Indent "includes %s spent executing %d call%s to %d sub%s defined therein"
adds 2c458e5 Added --minimal option to nytprofhtml to disable generation of graphviz .dot files and block/sub-level statement report files.
adds 3b11144 Abort with more information when a cryptic death is forseen.
adds 402026f Don't write a fake src line for "perl -e '...'" and "perl -" when src isn't available. Mark them as NYTP_FIDf_IS_EVAL (but without an eval_fid). Tweak Reader to generate a useful message instead of "Unable to open -e"
adds ef4cb0f Note some missing changes and credit Nicholas Clark
adds be79c61 Fix test to expect srclines_array to return undef when '-' file has no src.
adds 561b70f Fix links from block and sub level reports to evals to only use line level. RT#58284
adds d91e8db Clarify perl version requirements for seeing eval source code. RT#58283
adds 5278b42 Don't require VERSION number sync on so many modules.
adds bf391f7 Bump version to 4.01. Restore ordering of line-block-sub links on index page.
adds 9c0fee8 Fix (silly) performance problem in $fi->evals_by_line
adds dbeccd2 Fix typo and tweak docs re performance.
adds de73378 Remove old code to handle merged subs that had array refs as names. Make low trace levels less noisy for nytprofhtml
adds eadd474 Add extra message to distinguish raw loading (Reading) with collapsing evals etc (Processing).
adds dabe9b0 Fix nytprofhtml --profself option.
adds 3e88c53 Tweak trace levels for reporting.
adds ca5ee41 More trace level tweaking
adds 0e0b089 Add cache to make_path_strip_editor()
adds 2e9f2f0 Added progress reporting to report generation
adds 37706ec Delete old script that's superceeded by nytprofheml --profself
adds c217d0a Use simpler scheme for progres indication (CR instead of BS).
adds e1a8005 Bump version.
adds 29ae679 For subs that recurse, show max depth and time in subroutine table.
adds 0eaed71 Move deletion of donor evals from parent to after the donors loop. Massive speed improvement where there are many (thousands) of siblings.
adds dae5dce Make percentage progress fixed width
adds 4e86de8 Update Changes
adds 96eba5c Bump version to 4.03
adds 3711d27 Flush trace log messages immediately
adds f240555 Pre-extend PL_endav to reduce risk of crashes in apps that don't handle PL_endav carefully, like mod_perl.
adds 17aba9d Start distilling various bits of info on memory profiling into a handy reference for the future.
adds 8364c6c Updates to MemoryProfiling.pod, including links to email threads.
adds 89ecfc0 Add $& to a couple of test files so we can test detection of PL_sawampersand
adds 3c48199 Profile records presence of the slow regex match vars ($& $' $`). (not included in reports yet)
adds c20cc15 Flag the file on the index page in which we first saw the slow match variables.
adds 7421d6d Add flag to fileinfo_of to avoid warning on undef arg.
adds 3fea779 In collapse_sibling evals, update sawampersand_fid if it's one of the now-dead donors Remove some old code.
adds d0af0a9 Add clear NOTE to the report for the sawampersand_fid explaining the issue. Higlight appropriate file on index page even if sawampersand_fid is an eval fid.
adds b9541fb The cumulative inclusive time measured for subs that are involved in recursion is now reported as 'recursion: ... sum of overlapping time'. I'm not sure there are any useful use-cases for that number anyway, but at least the overlapping nature of the measure is more clear.
adds 09348e1 Prep for release. Bump versions. Update Changes. Move some items to HACKING.
adds 5090ea5 add exta link to memory profiling doc
adds 70112d0 Fix typos in the Changes file.
adds e418d53 Tweak Changes for release.
adds ecb8336 Mention B::Lint module (Devel::FindAmpersand "doesn’t work with a threaded perl").
adds eb0e636 Be more liberal in assuming automated testing (and lax max timing).
adds d09d912 Tweak max allowed cputime. re http://www.cpantesters.org/cpan/report/aa06dfea-8f19-11df-a1aa-55996e8696e0
adds 6d92142 Fix some compiler warnings http://www.cpantesters.org/cpan/report/aa06dfea-8f19-11df-a1aa-55996e8696e0
adds f73e603 Add more items to HACKING and a comment in demo/demo-code.pl
adds 005f417 Added to HACKING: The subroutine profiler spends a lot of its time allocating the two calle[rd]_subname_sv SVs in subr_entry_setup and freeing them in subr_entry_destroy. If, instead of freeing the SVs they were chained into a freelist that subr_entry_setup could pull from, we'd get a significant boost in performance for the subroutine profiler.
adds 52c0cf0 Bump noisy log output, when reading a profile, up to a higher trace levels.
adds 3ee3e17 Protect against bad line numbers (eg -1 being treated as 4294967295) hanging report generation.
adds be2989b Detect bad line numbers (-1 stored as unsigned) in sub caller data.
adds b850227 Add $SIG{USR2} = \&Carp::cluck; as handy way to see what's happening when nytprofhtml is sucking cpu for a long time.
adds e4526a1 Make 'file not found' messages related to Moose more self-explanatory.
adds a80543f Prep for 4.05 release.
adds 75e8d04 fix t/10-run.t for bleadperl ac56e7d
adds fc685a9 fix t/test08.t for bleadperl ac56e7d
adds 1ab941f fix t/test09.t for bleadperl ac56e7d
adds 0417a0f fix t/test23-strevall.t for bleadperl ac56e7d
adds 9368856 fix t/test20-streval.t and t/test50-disable.t for bleadperl ac56e7d
adds 0db6c81 Fix t/test61-submerge.t for bleadperl ac56e7d. The last one. Yeah!
adds 410ef9f Prep for Devel-NYTProf-4.04_71 dev release
adds 3f6c6f0 Add Devel::NYTProf::Test::ticks_for_usleep($usec) to help test clocks
adds dad158d Factor out clock initialization and ensure init'd from ticks_for_usleep.
adds fed9919 Preliminary reworking of statement time i/o
adds 2ede1c0 Convert 'unsigned int's to U32's to be explicit. Rename output*_int() to output*_u32() to be explicit.
adds ca6f8ce Move read_nv into FileHandle.xs Move read_int into FileHandle.xs and rename to read_u32.
adds e6ac11f Add workaround for some cpantesters failures.
adds 3c3819c Prep for dev release
adds 741e84a Fix for sign issues on 64 bit systems.
adds 30361cf Add signed int i/o. Support signed tick counts for statements.
adds 3cced57 Clarify the docs re clocks
adds 9fcbd12 Added experimental BSD::Resource usage tracking
adds f1b9caf clarify basic docs and add a link to a screencast to help initial users
adds 00de88f clarify error when unable to open profile file for writing
adds 17330f2 Added note to the docs re profiling applications that use Coro
adds b39be26 Clarified usecputime=1 docs
adds 4001361 Add exit status to error message. May shed light on http://www.cpantesters.org/cpan/report/f3028c56-c89b-11df-abb6-b9df888ae478
adds 4186228 No need for exclamation in "out of sync with source" warning
adds c588dfe add underscore to private function
adds 398bdd4 Updates tests for new functionality in Sub::Name 0.06 (assuming the relevant Sub::Name patch is applied)
adds f33e3d0 fix test count
adds a627ad4 Improve trace messages related to associating packages with files
adds 661a1bf Add preliminary (incomplete) test files for #line handling and Moose.
adds f051f75 remove unused import
adds dda4ed4 Improve handling of Class::MOP/Moose generated methods. A useful step in the right direction. Also avoids filename length problems caused by old behaviour that would prepend the cwd to non-absolute names that didn't seem to be evals.
adds e80f4dc Improve handling of embedded filenames, e.g., "(eval N)[$path]"
adds 04ebb0d Polish up handling of htmlopen option
adds d03f012 grumble about undef source lines
adds c784707 reduce trace level for per-file messages related to src code
adds f0e4737 Fix portability of pkg_name_len() to old perl versions
adds 3d0d372 Doc tweaks, mainly to the MAKING NYTPROF FASTER section.
adds 3064ec7 Tone down and update Testing details and add note about treating require as a slowop
adds 7495c93 Added notes in HACKING re a start=begin option and a way to ignore CORE:accept time
adds 422dd1c Make html option use the perl that's in the path
adds 7811d32 Make t/68-hashline.t a developer only test for now
adds d947bfb Make stmt and leave trace messages more informative. Add some (very limited) support for CxMULTICALL.
adds 3db833a Minor tweaks to t/71-moose.t
adds 911b546 Added "If Statement and Subroutine Timings Don't Match" and "If Headline Subroutine Timings Don't Match the Called Subs" sections to the DATA COLLECTION AND INTERPRETATION docs.
adds f3982e7 Note goto &sub (and thus AUTOLOAD and Memoize) as a cause of sub timing discrepancies
adds 715959e Added --no-mergeevals option
adds 995814a Minor tweak to ordering of fmt_time logic
adds 44b81bf Fix skip_collapse_evals
adds 2cf1f17 Update tests to be less sensitive to upcoming bleadperl changes
adds 206376d Avoid undef warnings for lines with no time/call stats
adds b1f7ead Some tweaks to HACKING
adds a842f75 Avoid nytprofhtml failure due to over-long filenames RT#62319
adds 9d372bc Added NYTP_write_attribute_nv()
adds 3b2b7ea Added special handling for the perl built-in accept() Effectively the clock stops ticking while in accept(). This makes profiles of pure-perl web servers more useful.
adds 7c51c6e Sync tests.
adds 864608f Document the special behaviour of accept()
adds d2c2615 prep for release
adds 5dfeeba Silence compiler warnings
adds 44d9e0f Document removal of empty statements in 5.13.7+
adds a88f831 Disable the new initial CxMULTICALL support, and fix probable cause of segv on OpenBSD
adds 2f67f7a Prep for release
adds dffa2d0 #ifdef works on symbols, not expressions
adds 3d1a950 minor edge case debug tweak for confusing CVs
adds cd7a306 Added and clarified some notes in the troubleshooting docs
adds 8e0b56c Fixed html generation to be valid RT70207 (H.Merijn Brand).
adds ce0563f add some links to MemoryProfiling.pod
adds 0b24d93 Enable file=/dev/null to work as fix for RT74565
adds 5568eb7 add basic check for Apache2::SizeLimit and update docs RT#75912
adds 3b7c84a add note re using hide_subr_call_time to hide things like FCGI::Accept
adds d64ed66 nytprofmerge no longer dies on some errors, RT#75918
adds 2c748ae nytprofmerge de-tab
adds 583b1f8 sum cumulative_overhead_ticks in nytprofmerge RT#75909
adds bfe4ae6 nytprofmerge now gets in man page installed, RT#75911
adds 4572709 Note Devel::NYTProf::Data is undocumented and why, RT#75914
adds 3493de6 Added some TROUBLESHOOTING info
adds 65cb263 Add --debug, add --open docs, use Browser::Open if available, rework related logic.
adds d466381 Added section on "subroutine calls had negative time" to TROUBLESHOOTING docs
adds 7254437 Clarified docs re fork generating multiple files, RT#78873
adds 0a04d24 add ptest target to Makefile as alias for prove
adds 693f094 fix unused result compiler warnings
adds 4c5ff76 add release date to Changes
adds d8e0a41 Fixed version numbers in nytprofhtml and nytprofmerge
adds 2b7cc70 add note about flame graphs to HACKING file
adds e4ea08a Bleadperl v5.17.3-252-gd3b9753 fix from David Mitchell.
adds fb7bc1c Prep for 4.09 release.
adds 683f5f7 Bumped VERSION
adds 8971cfc Corrected spelling thanks to Alessandro Ghedini @debian RT80370
adds 5425f74 Fixed to work with perl v5.17+, specifically string eval changes and hash randomization.
adds 54a6031 fix unused var warning
adds 6c310fc Fixed so tests ignore sitecustomize.pl, RT#79784
adds 6c153b3 clarify my (lack of) relationship to the NYT
adds 28c6ef7 Fixed to sort tables with microsecond values in non-utf8 encodings, RT#77843
adds 87ce4c8 Deprecate the usecputime=1 option
adds 70a15e3 prep for 4.11 release
adds 8648658 more prep for 4.11 release
adds e4aa4ed add .gitignore
adds 6c463c8 Fixed some doc typos thanks to Jesse Sheidlower.
adds 6c0a46b update MANIFEST.SKIP and MANIFEST
adds 65fe170 add t/72-autodie.t
adds 0225082 add devstuff/ dir that has random stuff that is not part of the distro, yet
adds 8eea780 add a few more demo/* scripts that were not previously checked in
adds 92cf961 tweak .gitignore
adds c133f3e Removed usecputime=1 option. (Use clock=N instead if possible.)
adds f3852f0 Update MANIFEST for previous t/61-cputime.t move
adds 7cf222a add blib/ to .gitignore
adds 5af263c Fix stray non-ascii char in MemoryProfiling.pod
adds 9fc9cea Add =encoding to bin/nytprofhtml pod
adds 7e5b60d Fix the perl v5.17+ fix to do-the-right-thing for 5.17.4.
adds 93c0c7c remove now-unused struct tms start_ctime, end_ctime
adds 8ccdbdc Fix stray non-ascii char in MemoryProfiling.pod
adds 24ee34e Add =encoding to bin/nytprofhtml pod
adds 074cb6b Fix the perl v5.17+ fix to do-the-right-thing for 5.17.4.
adds fd0c1fb Bump version to 4.12 and add Changes
adds 9a92af0 Merge branch 'nytprof-4.12'
adds 0561d11 Rename CLOCKS_PER_TICK to TICKS_PER_SEC
adds 26f2e04 Use ticks_per_sec instead of TICKS_PER_SEC
adds cdba988 Replace cumulative_subr_secs with cumulative_subr_ticks. (First step of several)
adds c8aa416 Convert initial_subr_secs to initial_subr_ticks.
adds 73d00f3 Convert called_sub_secs to called_sub_ticks.
adds 9f2a2d0 Convert incl_subr_sec to incl_subr_ticks.
adds 4c597d8 Convert excl_subr_sec to excl_subr_ticks
adds 4ad682c Completed switch from accumulating secs to ticks in the subroutine profiler.
adds 5f6a6be Improved nytprofmerge behaviour with inconsistent attributes.
adds c0d491a Prep for 4.23
adds 7995f24 minor tweaks to a few developer tests
adds 71769e9 #if 0 a couple of unused funcs to silence warnings
adds c80fef3 Updated Makefile.PL to refer to github
adds a30116d add .travis.yml for CI testing via github and travis-ci.org
adds 94de09c Update the README
adds 024160a Fixed tests to work with perl 5.17.7+ (PL_sawampersand gone)
adds 6ea85ed Further boost sub-profiler precision for POSIX and OSX clocks.
adds c8b5d08 Add travis-ci build status icon and link to README
adds c468949 Note extra precision for POSIX and OSX systems with sub-microsecond clocks.
adds 0d48265 Loosen timing constraints (for slow cpantester VMs)
adds afb519e Clarify sigexit option docs
adds 3ea5389 Initial work adding sub entry and return events to the event stream
adds 4abb490 Add some initial docs about the new call=1 option
adds 541dae0 Add output and input handlers for sub entry and return data.
adds 018add2 Add call=1 to testing variants. Make env_influence report smarter.
adds 0680934 add note to t/test51-enable.x about need for more tests
adds 065f421 Use calls=2 to get entry events. Add depth to return events.
adds 6467746 Fix u2time clock (ie Time::HiRes, used by Windows).
adds 2e12e9f fixup MANIFEST
adds 9a1b518 update .gitignore
adds 028f8a5 merge Changes from v4 branch
adds a2c34e2 initial working nytprofcalls
adds 8a0ed61 Squashed 'FlameGraph/' content from commit d9407a8
adds 6a9d95a Merge commit '8a0ed6170c6eae8f97b363d8b2a2fb6794b1bb41' as 'FlameGraph'
adds 9f67e82 Add FlameGraph/... to MANIFEST
adds d16fc63 Cleanups for nytprofcalls
adds 6ec4eb5 working but somewhat inefficient/bloated on big files
adds e018dda first step towards reusing the hashtable code
adds 40cf5af another step towards reusing the hashtable code
adds 234c6ad another step towards reusing the hashtable code
adds bf88e6e work in progress on nytprofcalls
adds 3f416a5 Move next_fid into the hash struct as next_id. Make fidhash a struct again.
adds 8949b25 Use entry_struct_size for allocation
adds fba51ac Pass Hash_entry to hash_op() as a pointer
adds 82f7004 Fix setting of prior_inserted on insert branch of hash_op
adds ead816a add subname->id mapping to same some memory
adds e7ac66b rewrite nytprofcalls to use sane efficient tree structure
adds 44fa551 add an optimization and some stats
adds 1f8bf3d Adde tests for nytprofcalls
adds 16cd1de add nytprofcalls to Makefile.PL
adds 9d52748 normalize string eval seqn in nytprofcalls
adds 5c44f3a tweak docs, comments, Changes
adds 60fe3f9 Rework option handling slightly. Add option values to data file.
adds 2e9a4c9 Complete work on adding options to data file and nytprofmerge
adds 7ad8677 Initial flamegraph support for overall program.
adds 9cebd39 Add caching to optimize url_for_file
adds e8971f6 update to latest flamegraph.pl
adds ec34812 Use new flamegraph.pl features, including clickable functions.
adds 2816770 No longer warn about $& etc being slow if $] >= 5.017008.
adds ad3b7f9 Set calls=1 and blocks=0 by default
adds faea8ce scale nytprofcalls output to (floating point) microseconds
adds ca84066 Fix nytprofmerge syntax error. Add SUB_ENTRY/SUB_RETURN.
adds 091fc8e Added visualization of the time spent outside of any subs.
adds 253cbeb quiet a test
adds bed3b2f update flamegraph.pl
adds 4ede3ef rm FlameGraph
adds 0f7b9b9 remove old FlameGraph repo from MANIFEST
adds 989db18 Add Test::Differences to deps. Remove t/test14.calls
adds 18038a6 Fixed test for perl 5.17+ hash randomization.
adds 4d35d12 Tweak wording on index page.
adds aa36386 Use actual micro character (latin1).
adds 2aa44ea ensure exit with 0 status
adds 1e62855 sync test with recent micro change
adds 0c10248 Add sanity check to nytprofcalls and disable broken optimization.
adds 191212a bug fix for flamegraph.pl
adds 4a1945c tweak the tracing for sub call/return
adds 7fb3792 Update Changes and HACKING
adds a5ce5fd sync tests for nytprofcalls fix
adds e8a8a4f Merge branch 'v5'
adds 78d4a1d update bin/flamegraph.pl
adds 4d37299 use bin/flamegraph.pl --factor instead of floating microseconds
adds ecfa785 improve open/close logging and clarity profiler_duration calculation
adds 25aa6d4 update bin/flamegraph.pl
adds 7b013f8 include ticks_per_sec in init_profiler log msg
adds 9cdea89 Use profiler_active not profiler_duration for flamegraph total
adds 0b660db refector hash structs to be reusable
adds 704295d Minor tidy up of hash structs. Added hash_stats() function and strhash table.
adds f8a439e Pass key & len to hash_op instead of &entry. Add get_str_id.
adds fb69dcc mark bin/nytprofcsv as deprecated
adds bb42b44 Tweak Devel::NYTProf docs.
adds ba1064c Don't index SVG package in bin/flamegraph.pl
adds 5b7d98a Dump assorted notes into HACKING
adds 9a453bf add --no-flame option to nytprofhtml
adds 6ec74de Implement string ids to reduce output volume. Currently just for calls stream.
adds ef02d83 Merge remote-tracking branch 'origin/master'
adds 4c55ca8 Use File::Spec->catfile() for portability
adds 28d79ad Merge branch 'pr/2'
adds 72ae873 Update Changes.
adds 95bed0a Clean up the MANIFEST to silence missing file warnings for files usually generated by "perl Makefile.PL".
adds 983f0c4 Silence some compiler warnings generated when compiling with Perl's that are compiled with a higher level of warnings.
adds c16f084 Have git ignore a few additional files created while building and testing the module.
adds f8977c4 Format the installation steps in the README.md
adds 8aa6cac Merge remote-tracking branch 'remotes/origin/pr/1'
adds 75bc4b5 bump version to 5.00
adds 4cd9599 update flamegraph to fix percentages
adds 16961cf Update MANIFEST
adds 3ecd503 update flamegraph with text improvements
adds bf063b4 Fix memory leak reading sub call return events
adds ca91df4 Do proper tree merging in nytprofcalls for sane memory use.
adds ada54bc Apply a little polish
adds e0f8b99 Prep Changes for 5.00 release.
adds 818ac5b Can't rely on #!-line to always work
adds 45b044a Merge pull request #3 from gisle/master
adds d8aa8b0 Avoid triggering "gcc internal compiler error"
adds 264bac9 Merge pull request #4 from gisle/gcc-error
adds c603441 Update Changes
adds 031eee6 Fix Windows build RT#84738.
adds 4ead743 prep for 5.01 release
adds 5797444 Fix Windows build, properly RT#84738.
adds 6e53df1 Prep for 5.02 release.
adds c3fd210 ensure flamegraph.pl is called according to OS
adds 6a1eab3 tell cpan about the repo
adds 480abb1 Merge remote-tracking branch 'origin/pr/5'
adds 0361263 Add meta robots noindex to html pages [Tokuhiro Matsuno]
adds cc3434e Avoid uninit warning
adds 040452b bump VERSION for release
adds 067edd9 Add "Other Tools" section to SEE ALSO with link to DTrace talk
adds 8826d73 Document --minimal in nytprofhtml's POD
adds a43f24d Merge pull request #7 from doherty/nytprofhtml-pod-minimal
adds 89ff693 Merge branch 'master' of github.com:timbunce/devel-nytprof
adds 7bd7804 Add libcexit=1 option thanks to Zefram RT#75912
adds e4efdf0 Add documentation for endatexit and libcexit options.
adds 1d596bc Mention nytprofhtml --minimal RT#86039 in Changes
adds 926b562 Allow negative times in tests, thanks to Gisle Aas, RT#85556.
adds 9362b1b Prep for 5.04 release
adds 7941a28 Fixed crash on "Can't use string as a subroutine ref" error, RT#86638
adds 50258f1 typo fix
adds b2a2fa2 typo fixes
adds 9f53490 typo fix
adds dc5535e typo fix
adds 8680b91 typo fix
adds 5027093 typo fixes
adds 5cf981f typo fix
adds 0b9b417 typo fix
adds 844a348 typo fixes
adds 7d10a52 Merge pull request #8 from dsteinbrunner/patch-2
adds 5316e55 kill $Id$
adds 9066dec kill $Id$
adds 436c7c9 kill $Id$
adds 8285747 kill $Id$
adds 002e82b kill $Id$
adds af5e057 kill $Id$
adds 13b20c8 kill $Id$
adds 3ad69de kill $Id$
adds ef79d10 kill $Id$
adds 8115aa0 kill $Id$
adds f00fa07 kill $Id$
adds a7b6aa8 kill $Id$
adds fe3094d kill $Id$
adds 6cdacfa kill $Id$
adds 78d24c6 kill $Id$
adds f3a7883 kill $Id$
adds 4c6899d kill $Id$
adds 32c1916 kill $Id$
adds c0d2e5a kill $Id$ even more
adds 11fa791 Merge pull request #9 from dsteinbrunner/patch-1
adds bc0d7d5 [doc] Devel::NYTProf needs to be loaded as early as possible
adds bbff166 Merge pull request #10 from moritz/master
adds 1b69c47 Fixed crash with libcexit=1, thanks to Zefram. RT#86548
adds 71ade08 Bump VERSION to 5.05
adds bfc9470 Update test90-strsubref.t for 5.18.x style error message
adds cd2668a Update Changes. Tweak PR#10 doc change
adds fc22bc0 fixed META_MERGE
adds 0cfc7b1 Merge pull request #12 from dsteinbrunner/patch-1
adds c4f3052 Update Changes for PR#12
adds 9ce226f Fixed for perl 5.19.4. RT#88288 thanks to sprout.
adds 89746df Fixed to no longer open a file when start=no. RT#87404.
adds 4e31b29 Fixed compiler warnings. RT#86728 thanks to Alexander Bluhm.
adds 8998ee0 Removed old benchmark.pl files. RT#86704.
adds f76f5bf Bump version to 5.06
adds bf8aba4 I'd like to add timestamp suffix to for file purge in production environment
adds 021eb9a Merge pull request #17 from zentooo/add_timestamp
adds 32ff18a Polished up addtimestamp option and interaction with addpid option.
adds 23fb765 added printer for plat_forms style reports
adds 3a949ff added tests for plat_forms style printer
adds 7cd6a91 added files to ignore
adds 3b2e564 added printer for plat_forms style reports
adds 59d9da7 removed Data::Dump dependency added nytprofpf to makefile wrote manpage documentation
adds 261b176 - removed Data::Dump dependency
adds 02345c5 Merge branch 'master' of https://github.com/holger-s/devel-nytprof
adds cd19812 removed extra test case for plat_forms
adds 50f67e1 changed version back to 5.05
adds 4289365 Merge branch 'master' of https://github.com/holger-s/devel-nytprof
adds 91fba51 added tim's comments
adds 19feffb - removed extra platforms_tests
adds 49b3dd6 - removed old tests
adds 9f476b2 Merge branch 'master' of https://github.com/holger-s/devel-nytprof
adds 4a831d0 - fixed test run
adds e032fb8 - bumped version to 5.06
adds 3605091 Merge remote-tracking branch 'upstream/master'
adds fe1f5d7 - fixed test count to 2 for .pf files
adds 2dbe7c6 Merge pull request #11 from holger-s/master
adds 561c0cc Tweak plat_form support merge and add Changes file note.
adds d8725de Wrap $SIG{USR2} assignment in an eval for Windows
adds d1afff3 Avoid NV to IV cast for NYTP_OPTf_ADDTIMESTAMP
adds da2f761 Put quotes around env var values reported by t/lib/NYTProfTest.pm
adds 110401d Fix t/test02.pf to not require unix-style file paths
adds 34f0cc2 update gitignore for Windows build products
adds 0e52417 use PERL_NO_GET_CONTEXT everywhere
adds b6f609d Fixed an '#if PERL_IMPLICIT_CONTEXT'.. Added link to explanatory comment. Added Changes.
adds 7722b39 Add pf (platform) files to MANIFEST, plus .travis.yml
adds 8230e3b Fix to write platforms test files to the temporary test output directory
adds 37547f6 Add perl 5.8, 5.18 and 5.19 to .travis.yml
adds 0879ef3 Refactor some nytprofcalls internals. No functional changes.
adds 297ecc5 Refactor Time::HiRes support so it can be enabled independently
adds de2eb57 reduce errno calls
adds cdfe7dc Simplify diff_files() in t/lib/NYTProfTest.pm
adds f81b850 Better diagnostics for fileinfo_of('(eval 1)[-:1]') failure
adds 5337607 Only run t/70-subname.t if Sub::Name 0.11 or later is installed.
adds 8667c2f Fixed link to screencast, thanks to Herwin. #19
adds cc50d97 Workaround travis cpanm issues eg https://travis-ci.org/timbunce/devel-nytprof/jobs/35285944
adds 184bf5b Improve .travis.yml
adds e54700a Further tweaks to .travis.yml
adds 8924094 Added hint to use --no-flame for big reports. #28. Added t/test02.pf.csv
adds fbc49b1 Further tweaks to .travis.yml
adds 839ab0d Fixed use of nytprofcalls and flamegraph scripts to not require PATH #21
adds b03293f Fixed nytprofhtml --open for KDE4 thanks to HMBRAND RT#99080
adds b049a22 Fixed printf NV conversion compiler warnings thanks to zefram RT#91986
adds 5ce7d29 Disabled optimize test25-strevalb.t if perl >= 5.20, perl RT#70211, #38
adds 8ff6b62 Fix syntax of perl_rt70211 check in t/test25-strevalb.t
adds 3a82a94 Typo in bin/nytprofhtml
adds a8c385e Merge pull request #41 from wollmers/patch-1
adds b672c62 Fix so works when perl installed in directory with space
adds 3139c45 Make bin/nytprofhtml work when perl in space
adds 7ec4a46 Merge pull request #40 from mohawk2/testfix
adds 62198c0 Allow sub name buffer size to be set at build time
adds cde5477 Update Changes.
adds 71e3e56 Put sort block on one line due line numbering change in perl 5.21
adds 2ecb271 Move tie tests into perl version specific variants
adds 93454f9 Commit the missing skip_all left off previous commit
adds 2c8f225 Install optional modules for better test coverage
adds 8af7606 Don't fail due to failure to install optional prereqs
adds ca6660d Preload some Moose prereqs to avoid travis-ci 60 sec timeout
adds 640393e Use travis_wait to workaround 'cpanm Moose' timeout
adds 0a11116 Give up testing with Moose due to timeouts
adds 5c6e569 Add docs re FCGI::Engine and open('-|') #20
adds 5efaa2d Bump version to 5.07
adds 19fde6d Clarification of the RUN-TIME CONTROL OF PROFILING docs
adds 2417df3 Clarify reason for loading Devel::NYTProf as early as possible.
adds 6ceb06c fallback to checking PATH for nytprof scripts
adds bea3d1c Merge pull request #61 from calid/perlbrew-locallib
adds 4e37722 Make t/50-errno.t write .out file in t/ like other tests
adds d8c1e9c Update MANIFEST.SKIP
adds 6072340 Update MANIFEST via "make manifest" and sort
adds 289fefd Use "Devel::NYTProf::Changes" as NAME in Changes
adds 88742f6 Add File::Which to prereqs and update Changes for #61
adds ee0c578 Clarified the documentation
adds 0d01eac Merge pull request #63 from dbooth-boston/master
adds 370c9e9 Typo in doc
adds 8854df2 Merge pull request #64 from wollmers/patch-2
adds bf220b6 PERL_DISABLE_PMC might be anywhere, not in CCFLAGS
adds e4555c1 Merge pull request #67 from bulk88/PMC
adds a4f48e5 use setvbuf to increase buffer size
adds fff3267 Merge pull request #69 from bulk88/setvbuf
adds 713d99e Clarified the docs re DB:: functions, #63 and updated Changes
adds a2fcc8b Add QueryPerformanceCounter clock for Windows
adds f762a82 Add QueryPerformanceCounter clock for Windows
adds 57496ca Fix unused variable warnings RT#103107
adds 082584f Bump version to 6.01 (in honor of Windows enhancement from bulk88). Changes.
adds 8afd5df switch from JSON::Any (deprecated) to JSON::MaybeXS
adds 1f6249f ignore new ExtUtils::MakeMaker artifact
adds 63dc68c Merge pull request #73 from karenetheridge/topic/json_any_deprecated
adds 1716369 Replace all search.cpan.org urls with metacpan.org urls
adds ce8dc87 switch search.cpan.org URLs to metacpan.org
adds 5e62002 Merge pull request #74 from karenetheridge/topic/metacpan_urls
adds da67f32 Move context definition into higher scopes
adds 31548bd Use "%"IVdf instead of "%ld" for printing IV values
adds a520cac Merge pull request #75 from jandubois/context-fixes
adds 1dc3f79 Updated to latest flamegraph.pl plus PR#62.
adds 906f231 Fix JSON::MaybeXS usage.
adds 489ce46 Use --hash on flamegraph (experimental). Update Changes. Bump version to 6.02
adds 7f3e56e Imported Upstream version 6.02+dfsg
new 812ccd8 Merge tag 'upstream/6.02+dfsg'
new 327b3b1 update changelog
new 9a6775d Update (build) dependencies.
new 29dcc9a releasing package libdevel-nytprof-perl version 6.02+dfsg-1
The 7 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "adds" were already present in the repository and have only
been added to this reference.
Summary of changes:
.gitignore | 1 +
Changes | 7 +
FileHandle.h | 2 +-
FileHandle.xs | 9 +-
HACKING | 2 +-
MANIFEST | 2 +
META.json | 7 +-
META.yml | 7 +-
Makefile.PL | 4 +-
MemoryProfiling.pod | 20 +-
NYTProf.h | 2 +-
NYTProf.xs | 14 +-
bin/flamegraph.pl | 757 +++++++++++++++++++++++++++++++++++++++-----
bin/nytprofcalls | 4 +-
bin/nytprofcg | 4 +-
bin/nytprofcsv | 8 +-
bin/nytprofhtml | 28 +-
bin/nytprofmerge | 4 +-
bin/nytprofpf | 8 +-
debian/changelog | 9 +
debian/control | 4 +-
debian/copyright | 6 +-
debian/repack.local | 3 -
debian/repack.stub | 91 ------
debian/upstream/metadata | 8 +
debian/watch | 5 +-
lib/Devel/NYTProf.pm | 4 +-
lib/Devel/NYTProf/Apache.pm | 2 +-
lib/Devel/NYTProf/Core.pm | 4 +-
lib/Devel/NYTProf/Data.pm | 4 +-
lib/Devel/NYTProf/Reader.pm | 4 +-
lib/Devel/NYTProf/Run.pm | 2 +-
lib/Devel/NYTProf/Util.pm | 2 +-
t/test01.x | 2 +-
t/test02.x | 2 +-
t/test03.x | 2 +-
t/test05.x | 2 +-
t/test06.x | 2 +-
t/test07.x | 2 +-
t/test08.x | 2 +-
t/test09.x | 2 +-
t/test10.x | 2 +-
t/test11.x | 2 +-
t/test12.x | 2 +-
t/test13.x | 2 +-
t/test14.pm_x | 2 +-
t/test14.x | 2 +-
t/test16.x | 2 +-
t/test20-streval.x | 2 +-
t/test21-streval3.x | 2 +-
t/test30-fork-0.x | 2 +-
t/test30-fork-1.x | 2 +-
t/test40pmc.pm_x | 2 +-
t/test40pmc.x | 2 +-
t/test50-disable.x | 2 +-
t/test51-enable.x | 2 +-
56 files changed, 798 insertions(+), 286 deletions(-)
delete mode 100644 debian/repack.local
delete mode 100755 debian/repack.stub
create mode 100644 debian/upstream/metadata
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libdevel-nytprof-perl.git
More information about the Pkg-perl-cvs-commits
mailing list