Devel::NYTProf::Changes - List of significant changes to Devel::NYTProf

(As of $Date: 2009-03-29 22:48:55 +0100 (Sun, 29 Mar 2009) $ $Revision: 733 $)

Changes in Devel::NYTProf 2.09 (svn r733) 29th March 2009

  Added support for modules using AutoLoader, e.g., POSIX & Storable,
    to fix the "Unable to open '... (autosplit into ...)'" warnings.
  Fixed report filename generation to remove colons,
    for Windows, reported by Adam Kennedy in rt bug #43798.
  Fixed report filename generation to remove dots, for VMS.
  Fixed savesrc option which wasn't safe and reliable.
  Added missing t/test22-strevala.t to MANIFEST.
  Extended testing to exercise compress and savesrc options.

Ported to VMS, thanks to Peter (Stig) Edwards:

  Renamed t/\d\d.test.t    files to t/\d\d_test.t 
          t/test*.pm.x     files to t/test*.pm_x 
          t/test*fork.\d.* files to t/test*fork-\d.*
          .js and .css     file to only have one period/dot
    for greater portability.  VMS ODS-2 files can only have
    one period/dot.
  Added t/92-file_port.t as a developer-only and
    request-using-ENV test, to help maintain portable files,
    currently and .perltidyrc fall foul of portable
    filename characters as defined by ANSI C and perlport.
  NYTProf.xs's open_output_file use mode 'wb' and not 'wbx'
    to avoid unsupported error when on VMS.

Changes in Devel::NYTProf 2.08 (svn r685) 15th Feb 2009


  Added optimize=0 option to disable the perl optimizer
    so you can see more accurate statement execution counts
    for some kinds of constructs.

  Added savesrc=1 option to copy source code into the profile
    so reports are not affected by changes to the source files.

  Added ability for DB::enable_profile() to specify a new file
    for profile data to be written to.


  Time spent within nested string evals is accounted for.

  Fixed searching @INC for source files for reports.

  Dramatically increased performance of nytprofhtml
    relative to the 2.07 version.

  Many tables in html reports are sortable by clicking on header columns
    (requires JavaScript, uses jQuery and tablesorter.js)

  Statement timings are now shown as integers in appropriate
    units: seconds, milliseconds, microseconds or nanoseconds.

  Hovering over times in subroutine or file summary tables
    now shows the percentage time.

  Added tables showing timings rolled up per package name depth.

  Improved HTML conformance thanks to Leland Johnson.

Changes in Devel::NYTProf 2.07 (svn r583) 1st Nov 2008


  NOTE: The file format has changed. Files from 2.04 and 2.05
  can still be read by this version.

  Subroutine inclusive time no longer counts time
    spent recursed into the same subroutine. That time is
    now recorded separately, along with the max recursion depth.

  Added stmts=0 option to disable the statement profiler
    so just the subroutine profiler runs. That reduces the
    profiler overhead and gives you much smaller data files.

  Now builds on Windows, with thanks to Jan Dubois!

  Removed use of vfscanf() to improve portability to Windows
    and old unix systems, thanks to Jan Dubois.

  The profiler takes more care to avoid changing $!.


  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.

  Subroutine calls made within string evals are now shown in reports.
  Subroutine caller details now includes calls from within string evals.

  XS subs (xsubs) are now automatically associated with a source
    file that defines normal subs in the same package.
  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
    if the xsub is in a package that contains profiled perl code.

  The html global subroutine index pages no longer list subs that
    were never called.

  Assorted report formating enhancements thanks to Gisle Aas.

  Exclusive and Inclusive time column positions have been switched
    to be consistent with how the times are presented elsewhere.

  nytprofhtml includes a --open option to open the generated html


  Greatly expanded description of the clocks used for profiling
    and their issues, especially on multi-processor systems.


  Added Devel::NYTProf::ReadStream module which provides a perl
    interface for reading the raw profile data, thanks to Gisle Aas.

Changes in Devel::NYTProf 2.05 (svn r498) 8th Oct 2008

  Fixed alteration of $! during profiling thanks to Slaven Rezic.
  Fixed clock_gettime() clock selection to fallback to CLOCK_REALTIME
    if CLOCK_MONOTONIC is not available, e.g, on linux 2.4.
  Fixed error when application ends after DB::disable_profile().

  Added some docs to Devel::NYTProf::Apache
  Added clock=N option to enable user to select the clock.

Changes in Devel::NYTProf 2.04 (svn r483) 1st Oct 2008

  Fixed rare divide-by-zero error in reporting code.
  Fixed rare core dump in reporting code.
  Fixed detection of #line directives to be more picky.
  Fixed some compiler warnings thanks to Richard Foley.

  Added on-the-fly ~90% zip compression thanks to Nicholas Clark.
    Reduces data file size per million statements executed
    from approx ~13MB to ~1MB (depends on code being profiled).

  Added extra table of all subs sorted by inclusive time.

  No longer warns about '/loader/0x800d8c/...' synthetic file
    names perl assigns reading code from a CODE ref in @INC

Changes in Devel::NYTProf 2.03 (svn r405) 15 Aug 2008

  1. File format changed. Old profiles can't be read.
  2. Perl 5.8.1 is the oldest perl version supported.

  Fixed accounting for time spent executing subs that were
    compiled in string evals.
  Fixed risk of file corruption by names containing newlines.

  Changed to also profile compile-time activity by default.
  Improved formating of stats for subs called by a statement.

  Added start=begin|init|end|no option to NYTPROF env var.
  Added addpid=1 option to NYTPROF env var.
  Added support for .pmc files.
  Added detection of #line directives in source code
    currently just warns that they are not handled.

  Known issues:
  Perl 5.8.8 can report garbage file names for XS subs.
  (Perl 5.8.6 and 5.10 don't seem to have this problem.)
  Where a subroutine is called from code compiled in a string
  evals, the artificial "eval file names" are not yet merged.
  (You're unlikely to notice this obscure case anyway.)

Changes in Devel::NYTProf 2.02 (svn r361) 24 Jul 2008

  Fixed colors to use the median (not average) deviation from the median value.
  Fixed sub name resolution to work in more, perhaps all, unusual cases.

  Improved accuracy of subroutine timing by deducting statement measurement overheads.
  Improved readability of subroutine caller lists.
  Replaced use of fpurge() with a more portable approach.

  Added exclusive subroutine time (time in sub excluding subs it called).
  Added recording of xsub filenames (i.e. DBI.c)
  Added use of clock_gettime(), if available, for 100ns resolution.
    Uses CLOCK_MONOTONIC or else CLOCK_REALTIME. Thanks to Steve Peters.

Changes in Devel::NYTProf 2.01

  Fixed and unified module version numbers.

Changes in Devel::NYTProf 2.00

  Major changes. Much extra functionality and performance.

Changes in and before 1.50

  1.50  ? ? ? 0:00:00 2008
    - Major revision to include Tim Bunce's call scope statistics features,
        code/doc refactoring, optimizations and bug fixes.
    - Fixes major issues with profiling code that forks.

  1.13  Wed Mar 26 9:35:00 2008
    - Fixed RedHat EL bug - %f isn't the C format for floating-point for RHEL
        Changed to warn-and-continue instead of dieing when a source 
        file cannot be found. (the file will be skipped). Feature by request.
        Makefile.PL changes by tim.bunce - fix warning on LICENSE key when 
        installed by older versions of MakeMaker. Added vim modeline.

  1.12  Tue Mar 25 11:05:00 2008
    - Fixed YET ANOTHER test failure caused by trivial differences between v5.6
        and v5.8.x. Added test15 that only executes on <5.8 and test06 now only
        runs on >5.8.0

  1.11  Mon Mar 24 11:26:00 2008
    - Rewrote test06 and test 13 only. No functionality changes. There is a Perl
        debugger bug. In perl >5.6 closing "}" in empty loops get execution
        counts for some reason. This caused 5.6 to fail 'make test' 
        needlessly. (5.6 actually handles it better and 5.8 & 5.10). So I 
        changed the code to avoid empty loop tests, which are no more useful 
        than loops with code in them. 
        *test06 now tests only loops - foreach, while and do-while loops. 
        *test13 now tests only forms of eval, and eval failures - loops removed

  1.10  Web Mar 19 21:02:00 2008
    - Another CPAN versioning fix. Hopefully the last!!!
    - Added check to report unsupported OS on Win32

  0.09  Wed Mar 19 13:05:00 2008
    - Fixed broken CPAN version numbering
    - Implemented malloc() fix by Tim Bunce (tim.bunce@gmail.[nospam]com
    - Wrote a better eval test, now covers all uses ("", perlcode, {...})
    - Fixed AutoSplit file source problem
    - Wrote AutoSplit/AutoLoader tests (test14)
    - Bugs fixed (hopefully)  33889, 34234, 33991, 33878

  0.08  Mon Mar 10 17:35:00 2008
    - Added #define to fix missing linkage for OutCopFile (Perl <5.8.0 fix)
    - Added test12, basic do script test
    - Moved min version to 5.6.0 again (another attempt)

  0.05  Fri Mar 7 10:29:00 2008
    - Changed XS code to compile clean with -ansi and -pedantic
    - Removed `cont' on file argument to process due to XS error in Perl 5.6
    - Added code to Makefile.PL so that header sources are run through the C 
        pre-processor (if available) as a potential fix for some BSD systems.

  0.03  Thu Mar 6 09:12:00 2008
    - Fixed a VERY tricky bug some people had encountered. Scalar references to 
        code that is evaled at runtime will cause divide-by-zero error IF the
        reference was declared in a BEGIN {...} and used outside of a BEGIN. 
        (The debugger/profiler can't see what happens in a BEGIN)
    - Added test case for above issue as test11
    - Fixed (i hope) the OSX segfault when using a re-malloc'd pointer that was 
        once freed.
    - Changed XS to compile cleanly with -Wall.
    - Adopted versioning scheme: modules/files start at 1.0 and the distro will
        continue from 0.0, thus making mixed versions less confusing.
    - Enabled the debugging switch so that NYTProf can be used in the form
        perl -MDevel::NYTProf (BUT this is ALPHA quality -- may bork)
    - Minor cleanup to Makefile.PL

  0.02  Wed Mar 5 14:20:00 2008
    - fixed a bunch of minor problems with the distribution that caused cpan
        warnings and also cause the exe scripts to not be installed
    - now a working cpan distro

  0.01  Tue Feb 12 10:34:03 2008
    - original version; created by h2xs 1.23 with options
        -A -n Devel::NYTProf