Author: tim.bunce
Date: Fri Oct 17 04:01:59 2008
New Revision: 526
Modified:
trunk/HACKING
trunk/NYTProf.xs
trunk/lib/Devel/NYTProf.pm
trunk/lib/Devel/NYTProf/Data.pm
trunk/t/test01.rdt
trunk/t/test02.rdt
trunk/t/test03.rdt
trunk/t/test05.rdt
trunk/t/test06.rdt
trunk/t/test07.rdt
trunk/t/test08.rdt
trunk/t/test09.rdt
trunk/t/test10.rdt
trunk/t/test11.rdt
trunk/t/test12.rdt
trunk/t/test13.rdt
trunk/t/test14.rdt
trunk/t/test30-fork.0.rdt
trunk/t/test30-fork.1.rdt
trunk/t/test30-fork.1.x
trunk/t/test40pmc.rdt
trunk/t/test50-disable.rdt
trunk/t/test60-subname.rdt
trunk/t/test80-recurs.rdt
Log:
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_discounted total_stmts_duration total_stmts_measured
Update the Limitations section of the doc.
Added Nick and Jan to history.
Modified: trunk/HACKING
==============================================================================
--- trunk/HACKING (original)
+++ trunk/HACKING Fri Oct 17 04:01:59 2008
@@ -293,9 +293,7 @@
subtract the difference. Then use the same logic to get inclusive and
exclusive
values as we use for inclusive and exclusive subroutine times.
-Could add an extra attribute that measures time spent when recursing
(based on
-CvDEPTH(cv)) wich would be 0 for subs that didn't recurse (a handy
boolean) and
-could be subtracted from the inclusive time to get the 'outer' inclusive
time.
+Report max recursion depth and reci_time per sub in per-file reports.
Could add ::Data method to write source code for each fid into
$dir/nytprof_src_$fid.txt
OR, probably better, add method to return source code array ref, that
defaults to returning
Modified: trunk/NYTProf.xs
==============================================================================
--- trunk/NYTProf.xs (original)
+++ trunk/NYTProf.xs Fri Oct 17 04:01:59 2008
@@ -87,7 +87,6 @@
#define NYTP_TAG_NO_TAG '\0' /* Used as a flag to mean "no tag"
*/
-#define output_int(i) output_tag_int(NYTP_TAG_NO_TAG, (unsigned
int)(i))
/* Hash table definitions */
#define MAX_HASH_SIZE 512
@@ -248,7 +247,9 @@
/* prototypes */
static void output_header(pTHX);
static void output_tag_int(unsigned char tag, unsigned int);
+#define output_int(i) output_tag_int(NYTP_TAG_NO_TAG, (unsigned
int)(i))
static void output_str(char *str, I32 len);
+static void output_nv(NV nv);
static unsigned int read_int();
static SV *read_str(pTHX_ SV *sv);
static unsigned int get_file_id(pTHX_ char*, STRLEN, int created_via);
@@ -280,13 +281,7 @@
#ifndef HAS_GETPPID
#define getppid() 0
#endif
-#define OUTPUT_PID() STMT_START { \
- assert(out != NULL); output_tag_int(NYTP_TAG_PID_START, getpid());
output_int(getppid()); \
-} STMT_END
-#define END_OUTPUT_PID(pid) STMT_START { \
- assert(out != NULL); output_tag_int(NYTP_TAG_PID_END, pid);
NYTP_flush(out); \
-} STMT_END
/***********************************
* Devel::NYTProf Functions *
@@ -767,6 +762,24 @@
return fclose(raw_file);
}
+
+static NV
+gettimeofday_nv(void)
+{
+#ifdef HAS_GETTIMEOFDAY
+ struct timeval when;
+ gettimeofday(&when, (struct timezone *) 0);
+ return when.tv_sec + (when.tv_usec / 1000000.0);
+#else
+ if (u2time) {
+ UV time_of_day[2];
+ (*u2time)(aTHX_ &time_of_day);
+ return time_of_day[0] + (time_of_day[1] / 1000000.0);
+ }
+ return 0.0;
+#endif
+}
+
/**
* output file header
*/
@@ -806,15 +819,12 @@
compression_level, zlibVersion());
NYTP_write(out, &tag, sizeof(tag));
NYTP_start_deflate(out);
-
- /* If the next action stops being OUTPUT_PID(), or it stops having
- a flush() built in, consider adding a call to
- sync_avail_out_to_ftell() "here" instead, most logically by putting
- it in NYTP_start_deflate(out). */
}
#endif
- OUTPUT_PID();
+ output_tag_int(NYTP_TAG_PID_START, getpid());
+ output_int(getppid());
+ output_nv(gettimeofday_nv());
write_cached_fids(); /* empty initially,
non-empty after fork */
@@ -1575,8 +1585,9 @@
return;
}
+ reinit_if_forked(aTHX);
+
if (last_executed_fid) {
- reinit_if_forked(aTHX);
output_tag_int((unsigned char)((profile_blocks)
? NYTP_TAG_TIME_BLOCK : NYTP_TAG_TIME_LINE), elapsed);
@@ -1745,6 +1756,14 @@
open_output_file(pTHX_ char *filename)
{
char filename_buf[MAXPATHLEN];
+ /* 'x' is a GNU C lib extension for O_EXCL which gives us a little
+ * extra protection, but it isn't POSIX compliant */
+ char *mode = "wbx";
+ /* most systems that don't support it will silently ignore it
+ * but for some we need to remove it to avoid an error */
+#ifdef WIN32
+ mode = "wb";
+#endif
if ((profile_opts & NYTP_OPTf_ADDPID)
|| out /* already opened so assume forking */
@@ -1756,12 +1775,13 @@
/* some protection against multiple processes writing to the same file
*/
unlink(filename); /* throw away any previous file */
- out = NYTP_open(filename, "wb");
+
+ out = NYTP_open(filename, mode);
if (!out) {
int fopen_errno = errno;
char *hint = "";
if (fopen_errno==EEXIST && !(profile_opts & NYTP_OPTf_ADDPID))
- hint = " (enable addpid mode to protect against concurrent
writes)";
+ hint = " (enable addpid option to protect against concurrent
writes)";
disable_profile(aTHX);
croak("Failed to open output '%s': %s%s", filename,
strerror(fopen_errno), hint);
}
@@ -1780,9 +1800,11 @@
/* we're now the child process */
if (trace_level >= 1)
warn("New pid %d (was %d)\n", getpid(), last_pid);
+
/* reset state */
last_pid = getpid();
last_executed_fileptr = NULL;
+ last_executed_fid = 0; /* don't count the fork in the child */
if (sub_callers_hv)
hv_clear(sub_callers_hv);
@@ -2169,6 +2191,10 @@
enable_profile(pTHX)
{
int prev_is_profiling = is_profiling;
+ if (!out) {
+ warn("enable_profile: NYTProf not active");
+ return 0;
+ }
if (trace_level)
warn("NYTProf enable_profile%s", (prev_is_profiling)?" (already
enabled)":"");
is_profiling = 1;
@@ -2214,10 +2240,13 @@
if (out) {
write_sub_line_ranges(aTHX);
write_sub_callers(aTHX);
+
/* mark end of profile data for last_pid pid
* (which is the pid that relates to the out filehandle)
*/
- END_OUTPUT_PID(last_pid);
+ output_tag_int(NYTP_TAG_PID_END, last_pid);
+ output_nv(gettimeofday_nv());
+
if (-1 == NYTP_close(out, 0))
warn("Error closing profile data file: %s", strerror(errno));
out = NULL;
@@ -2259,6 +2288,11 @@
croak("clock_gettime CLOCK_REALTIME not available (%s),
aborting",
strerror(errno));
}
+#else
+ if (profile_clock != -1) { /* user tried to select different clock */
+ warn("clock %d not available (clock_gettime not supported on this
system)\n");
+ profile_clock = -1;
+ }
#endif
if (trace_level || profile_zero)
@@ -2658,6 +2692,15 @@
}
+static void
+store_attrib_sv(pTHX_ HV *attr_hv, char *text, SV *value_sv)
+{
+ (void)hv_store(attr_hv, text, (I32)strlen(text), value_sv, 0);
+ if (trace_level >= 2)
+ warn(": %s = '%s'\n", text, SvPV_nolen(value_sv));
+}
+
+
/**
* Process a profile output file and return the results in a hash like
* { fid_fileinfo => [ [file, other...info ], ... ], # index by [fid]
@@ -2680,9 +2723,9 @@
unsigned int last_file_num = 0;
unsigned int last_line_num = 0;
int statement_discount = 0;
- NV total_stmt_seconds = 0.0;
- int total_stmt_measures = 0;
- int total_stmt_discounts = 0;
+ NV total_stmts_duration = 0.0;
+ int total_stmts_measured = 0;
+ int total_stmts_discounted = 0;
HV *profile_hv;
HV* profile_modes = newHV();
HV *live_pids_hv = newHV();
@@ -2696,6 +2739,11 @@
HV* sub_callers_hv = newHV();
SV *tmp_str_sv = newSVpvn("",0);
+ /* these times don't reflect profile_enable & profile_disable calls */
+ NV profiler_start_time = 0.0;
+ NV profiler_end_time = 0.0;
+ NV profiler_duration = 0.0;
+
av_extend(fid_fileinfo_av, 64); /* grow it up front. */
av_extend(fid_filecontents_av, 64);
av_extend(fid_line_time_av, 64);
@@ -2732,7 +2780,7 @@
if (statement_discount)
warn("multiple statement discount after %u:%d\n",
last_file_num, last_line_num);
++statement_discount;
- ++total_stmt_discounts;
+ ++total_stmts_discounted;
break;
}
@@ -2804,8 +2852,8 @@
warn("\tblock %u, sub %u\n", block_line_num,
sub_line_num);
}
- total_stmt_measures++;
- total_stmt_seconds += seconds;
+ total_stmts_measured++;
+ total_stmts_duration += seconds;
statement_discount = 0;
last_file_num = file_num;
break;
@@ -2985,10 +3033,15 @@
unsigned int pid = read_int();
unsigned int ppid = read_int();
int len = my_snprintf(text, sizeof(text), "%d", pid);
+ profiler_start_time = (file_minor >= 1) ? read_nv() : 0;
+
(void)hv_store(live_pids_hv, text, len, newSVuv(ppid), 0);
if (trace_level)
- warn("Start of profile data for pid %s
(ppid %d, %"IVdf" pids live)\n",
- text, ppid, HvKEYS(live_pids_hv));
+ warn("Start of profile data for pid %s
(ppid %d, %"IVdf" pids live) at %"NVff"\n",
+ text, ppid, HvKEYS(live_pids_hv),
profiler_start_time);
+
+ store_attrib_sv(aTHX_ attr_hv, "profiler_start_time",
newSVnv(profiler_start_time));
+
break;
}
@@ -2997,12 +3050,19 @@
char text[MAXPATHLEN*2];
unsigned int pid = read_int();
int len = my_snprintf(text, sizeof(text), "%d", pid);
+ profiler_end_time = (file_minor >= 1) ? read_nv() : 0;
+
if (!hv_delete(live_pids_hv, text, len, 0))
warn("Inconsistent pids in profile data (pid %d not
introduced)",
pid);
if (trace_level)
- warn("End of profile data for pid %s, %"IVdf"
remaining\n", text,
- HvKEYS(live_pids_hv));
+ warn("End of profile data for pid %s (%"IVdf"
remaining) at %"NVff"\n", text,
+ HvKEYS(live_pids_hv), profiler_end_time);
+
+ store_attrib_sv(aTHX_ attr_hv, "profiler_end_time",
newSVnv(profiler_end_time));
+ profiler_duration = profiler_end_time -
profiler_start_time;
+ store_attrib_sv(aTHX_ attr_hv, "profiler_duration",
newSVnv(profiler_duration));
+
break;
}
@@ -3022,10 +3082,7 @@
}
*value++ = '\0';
value_sv = newSVpvn(value, end-value);
- (void)hv_store(attr_hv, text, (I32)strlen(text), value_sv,
0);
- if (trace_level >= 2)
- /* includes \n */
- warn(": %s = '%s'\n", text, SvPV_nolen(value_sv));
+ store_attrib_sv(aTHX_ attr_hv, text, value_sv);
if ('t' == *text && strEQ(text, "ticks_per_sec")) {
ticks_per_sec = (unsigned int)SvUV(value_sv);
}
@@ -3070,9 +3127,27 @@
sv_free((SV*)live_pids_hv);
sv_free(tmp_str_sv);
- if (trace_level >= 1)
- warn("Statement totals: measured %d, discounted %d,
time %"NVff"s\n",
- total_stmt_measures, total_stmt_discounts, total_stmt_seconds);
+ store_attrib_sv(aTHX_ attr_hv, "total_stmts_measured",
newSVnv(total_stmts_measured));
+ store_attrib_sv(aTHX_ attr_hv, "total_stmts_discounted",
newSVnv(total_stmts_discounted));
+ store_attrib_sv(aTHX_ attr_hv, "total_stmts_duration",
newSVnv(total_stmts_duration));
+
+ if (1) {
+ int show_summary_stats = (trace_level >= 1);
+
+ if (profiler_end_time && total_stmts_duration > profiler_duration
* 1.1) {
+ warn("The sum of the statement timings is %.1f%% of the total
time profiling."
+ " (Values slightly over 100%% can be due simply to
cumulative timing errors,"
+ " whereas larger values can indicate a problem with the
clock used.)\n",
+ total_stmts_duration / profiler_duration * 100);
+ show_summary_stats = 1;
+ }
+
+ if (show_summary_stats)
+ warn("Summary: statements profiled %d (%d-%d), sum of
time %"NVff"s, profile spanned %"NVff"s\n",
+ total_stmts_measured-total_stmts_discounted,
+ total_stmts_measured, total_stmts_discounted,
+ total_stmts_duration,
profiler_end_time-profiler_start_time);
+ }
profile_hv = newHV();
(void)hv_stores(profile_hv, "attribute",
newRV_noinc((SV*)attr_hv));
Modified: trunk/lib/Devel/NYTProf.pm
==============================================================================
--- trunk/lib/Devel/NYTProf.pm (original)
+++ trunk/lib/Devel/NYTProf.pm Fri Oct 17 04:01:59 2008
@@ -334,14 +334,10 @@
=head1 LIMITATIONS
-=head2 Only profiles code loaded after this module
-
-Loading via the perl -d option ensures it's loaded first.
-
=head2 threads
C<Devel::NYTProf> is not currently thread safe. If you'd be interested in
-helping us make it thread safe then please get in touch with us.
+helping to make it thread safe then please get in touch with us.
=head2 For perl versions before 5.8.8 it may change what caller() returns
@@ -352,17 +348,12 @@
=head2 Calls made via operator overloading
Calls made via operator overloading are not noticed by any subroutine
profiler.
+Though the statements executed by the code in the overload subs are
profiled.
=head2 goto
The C<goto &$sub;> isn't recognised as a subroutine call by the subroutine
profiler.
-=head2 Windows
-
-Currently there's no support for Windows. Some work is being done on a
port.
-If you'd be interested in helping us port to Windows then please get in
touch
-with us.
-
=head2 #line directives
The reporting code currently doesn't handle #line directives, but at least
it
@@ -385,7 +376,7 @@
If your system doesn't support the C<clock=N> option then you could try
using the C<usecputime=1> option. That will give you cpu-time measurements
-but only at a very low 1/00th of a second resolution.
+but only at a very low 1/100th of a second resolution.
=head1 BUGS
@@ -479,7 +470,8 @@
cross-linked reports.
Steve Peters came on board along the way with patches for portability and
to
-keep NYTProf working with the latest development perl versions.
+keep NYTProf working with the latest development perl versions. Nicholas
Clark
+added zip compression. Jan Dubois contributed Windows support.
Adam's work is sponsored by The New York Times Co.
L<http://open.nytimes.com>.
Tim's work was partly sponsored by Shopzilla. L<http://www.shopzilla.com>.
Modified: trunk/lib/Devel/NYTProf/Data.pm
==============================================================================
--- trunk/lib/Devel/NYTProf/Data.pm (original)
+++ trunk/lib/Devel/NYTProf/Data.pm Fri Oct 17 04:01:59 2008
@@ -431,12 +431,14 @@
sub normalize_variables {
my $self = shift;
- $self->{attribute}{basetime} = 0;
- $self->{attribute}{xs_version} = 0;
- $self->{attribute}{perl_version} = 0;
- $self->{attribute}{clock_id} = 0;
- $self->{attribute}{ticks_per_sec} = 0;
- $self->{attribute}{nv_size} = 0;
+ for my $attr (qw(
+ basetime xs_version perl_version clock_id ticks_per_sec nv_size
+ profiler_duration profiler_end_time profiler_start_time
+ total_stmts_duration
+ total_stmts_measured total_stmts_discounted
+ )) {
+ $self->{attribute}{$attr} = 0;
+ }
my $eval_regex = qr/ \( ((?:re_)?) eval \s \d+ \) /x;
Modified: trunk/t/test01.rdt
==============================================================================
--- trunk/t/test01.rdt (original)
+++ trunk/t/test01.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 2 [ 0 4 ]
fid_block_time 1 7 [ 0 4 ]
Modified: trunk/t/test02.rdt
==============================================================================
--- trunk/t/test02.rdt (original)
+++ trunk/t/test02.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 2 [ 0 4 ]
fid_block_time 1 7 [ 0 7 ]
Modified: trunk/t/test03.rdt
==============================================================================
--- trunk/t/test03.rdt (original)
+++ trunk/t/test03.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 2 [ 0 2 ]
fid_block_time 1 8 [ 0 2 ]
Modified: trunk/t/test05.rdt
==============================================================================
--- trunk/t/test05.rdt (original)
+++ trunk/t/test05.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 5 [ 0 2 ]
fid_block_time 1 9 [ 0 2 ]
Modified: trunk/t/test06.rdt
==============================================================================
--- trunk/t/test06.rdt (original)
+++ trunk/t/test06.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 4 [ 0 1 ]
fid_block_time 1 6 [ 0 410 ]
Modified: trunk/t/test07.rdt
==============================================================================
--- trunk/t/test07.rdt (original)
+++ trunk/t/test07.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 1 [ 0 1 ]
fid_fileinfo 1 [ /.../test07.p 1 2 0 0 ]
Modified: trunk/t/test08.rdt
==============================================================================
--- trunk/t/test08.rdt (original)
+++ trunk/t/test08.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 1 0 0
fid_block_time 1 1 1 1
Modified: trunk/t/test09.rdt
==============================================================================
--- trunk/t/test09.rdt (original)
+++ trunk/t/test09.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 2 0 0
fid_block_time 1 2 1 2
Modified: trunk/t/test10.rdt
==============================================================================
--- trunk/t/test10.rdt (original)
+++ trunk/t/test10.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 1 0 0
fid_block_time 1 1 1 1
Modified: trunk/t/test11.rdt
==============================================================================
--- trunk/t/test11.rdt (original)
+++ trunk/t/test11.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 3 0 0
fid_block_time 1 3 1 0
Modified: trunk/t/test12.rdt
==============================================================================
--- trunk/t/test12.rdt (original)
+++ trunk/t/test12.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 1 [ 0 1 ]
fid_block_time 2 1 [ 0 1 ]
Modified: trunk/t/test13.rdt
==============================================================================
--- trunk/t/test13.rdt (original)
+++ trunk/t/test13.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 4 [ 0 3 ]
fid_block_time 1 8 [ 0 1 ]
Modified: trunk/t/test14.rdt
==============================================================================
--- trunk/t/test14.rdt (original)
+++ trunk/t/test14.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 17 [ 0 1 ]
fid_block_time 1 18 [ 0 1 ]
Modified: trunk/t/test30-fork.0.rdt
==============================================================================
--- trunk/t/test30-fork.0.rdt (original)
+++ trunk/t/test30-fork.0.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 2 [ 0 2 ]
fid_block_time 1 7 [ 0 3 ]
Modified: trunk/t/test30-fork.1.rdt
==============================================================================
--- trunk/t/test30-fork.1.rdt (original)
+++ trunk/t/test30-fork.1.rdt Fri Oct 17 04:01:59 2008
@@ -3,11 +3,16 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 7 [ 0 2 ]
fid_block_time 1 11 [ 0 2 ]
-fid_block_time 1 17 [ 0 1 ]
fid_block_time 1 19 [ 0 1 ]
fid_block_time 1 20 [ 0 1 ]
fid_block_time 1 22 [ 0 1 ]
@@ -15,13 +20,11 @@
fid_line_time 1 7 [ 0 2 ]
fid_line_time 1 11 [ 0 1 ]
fid_line_time 1 12 [ 0 1 ]
-fid_line_time 1 17 [ 0 1 ]
fid_line_time 1 19 [ 0 1 ]
fid_line_time 1 20 [ 0 1 ]
fid_line_time 1 22 [ 0 1 ]
fid_sub_time 1 7 [ 0 2 ]
fid_sub_time 1 11 [ 0 2 ]
-fid_sub_time 1 17 [ 0 1 ]
fid_sub_time 1 19 [ 0 1 ]
fid_sub_time 1 20 [ 0 1 ]
fid_sub_time 1 22 [ 0 1 ]
Modified: trunk/t/test30-fork.1.x
==============================================================================
--- trunk/t/test30-fork.1.x (original)
+++ trunk/t/test30-fork.1.x Fri Oct 17 04:01:59 2008
@@ -17,7 +17,7 @@
0,0,0,
0,0,0,prefork();
0,0,0,
-0,1,0,fork;
+0,0,0,fork;
0,0,0,
0,1,0,postfork();
0,1,0,other();
Modified: trunk/t/test40pmc.rdt
==============================================================================
--- trunk/t/test40pmc.rdt (original)
+++ trunk/t/test40pmc.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 4 [ 0 1 ]
fid_block_time 2 6 [ 0 1 ]
Modified: trunk/t/test50-disable.rdt
==============================================================================
--- trunk/t/test50-disable.rdt (original)
+++ trunk/t/test50-disable.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 1 [ 0 1 ]
fid_block_time 1 2 [ 0 1 ]
Modified: trunk/t/test60-subname.rdt
==============================================================================
--- trunk/t/test60-subname.rdt (original)
+++ trunk/t/test60-subname.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 5 [ 0 1 ]
fid_block_time 1 9 [ 0 1 ]
Modified: trunk/t/test80-recurs.rdt
==============================================================================
--- trunk/t/test80-recurs.rdt (original)
+++ trunk/t/test80-recurs.rdt Fri Oct 17 04:01:59 2008
@@ -3,7 +3,13 @@
attribute clock_id 0
attribute nv_size 0
attribute perl_version 0
+attribute profiler_duration 0
+attribute profiler_end_time 0
+attribute profiler_start_time 0
attribute ticks_per_sec 0
+attribute total_stmts_discounted 0
+attribute total_stmts_duration 0
+attribute total_stmts_measured 0
attribute xs_version 0
fid_block_time 1 2 [ 0 6 ]
fid_block_time 1 7 [ 0 1 ]
--~--~---------~--~----~------------~-------~--~----~
You've received this message because you are subscribed to
the Devel::NYTProf Development User group.
Group hosted at: http://groups.google.com/group/develnytprof-dev
Project hosted at: http://perl-devel-nytprof.googlecode.com
CPAN distribution: http://search.cpan.org/dist/Devel-NYTProf
To post, email: [email protected]
To unsubscribe, email: [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---