I've been using Capture::Tiny lately to great effect, but recently came
across a problem in conjunction with Devel::NYTProf. Perhaps you've
already encountered this, but when run under profiling Capture::Tiny
spends a great deal of time in C<_files_exist()>.
A simple demonstration would be:
Show quoted text
> perl -d:NYTProf -MCapture::Tiny=tee_merged -le 'tee_merged { print
"hi" } for 1 .. 100' > /dev/null
Show quoted text> nytprofcsv Generating CSV report...
Reading nytprof.out
Processing nytprof.out data
Writing sub reports to nytprof directory
100% ...
Writing block reports to nytprof directory
100% ...
Writing line reports to nytprof directory
100% ...
Show quoted text> grep 'sub _files_exist' nytprof/Capture-Tiny-pm-2-sub.csv
2.537151,196944,0.000013,sub _files_exist { -f $_ || return 0 for @_;
return 1 }
That grep result shows that C<_files_exist()> was called almost 200,000
times and took about 2.5 seconds. This adds noise to the profile output,
and makes certain profiling tasks take an enormous amount of time.
When run without NYTProf, performance is fine, so it seems to be based
on interference. I'm not sure if you can alter this behavior, but wanted
to bring it to your attention.
Thanks for the module!
- danboo