That's a really thorny issue.  We used to copy references, but that introduced 
a lot of surprise bugs when people used header metadata to track progress 
through a pipeline.  Deep copying is expensive, but obeys the principle of 
least surprise.  I suspect the Right answer is to fix map to pass-through the 
hdrcpy flag, instead of just turning it on.


On May 22, 2013, at 10:46 AM, Tim Jenness <[email protected]> wrote:

> Presumably a slice operation should copy a reference to the 
> Astro::FITS::Header object rather than deep copy it?
> 
> 
> On Wed, May 22, 2013 at 9:18 AM, Derek Lamb <[email protected]> wrote:
> I have been using Devel::NYTProf for some time to squeeze performance out of 
> a time-critical application.  The application reads in a 4k x 4k image, 
> resizes it (makes it smaller), runs a complex computer vision algorithm on 
> the scaled-down data, outputs a bunch of data to text files and maintains a 
> SQLite database. Some items I figured out along the way:
> 
> Doing "$new_pdl = zeroes($pdl);" is generally much slower than "$new_pdl = 
> 0*$pdl", which is an issue if you are creating a bunch of large-image-sized 
> workspaces.  I haven't compared to (for example) $new_pdl = 
> zeroes($pdl->dims);
> 
> Watch out for automatic PDL hdr copying.  Our input data is FITS so the 
> piddles have a hdr, but hdrcpy is normally turned off.  But 
> PDL::Transform::map turns hdrcpy on before it exits (which normally makes 
> sense), so I was spending a lot of time with Astro::FITS::Header copying the 
> header of lots of small piddle slices.  Explicitly turning hdrcpy off after 
> PDL::Transform::map() returned saved a bunch of time. One subroutine went 
> from taking 160 seconds per input file to 4 seconds.  (That's not a 
> typo--that one change sped that subroutine up by a factor of 40).
> 
> I had previously posted about speeding up whichND on a 2D piddle of region 
> values (see thread starting at 
> http://mailman.jach.hawaii.edu/pipermail/perldl/2011-August/005311.html)
> 
> The Devel::NYTProf Synopsis has a link to a screencast presentation by Tim 
> Bunce that I found extremely useful and much easier than reading the POD.
> 
> best,
> Derek
> 
> On May 21, 2013, at 7:14 PM, Chris Marshall wrote:
> 
> > To PDL Users-
> >
> > As part of the run up to the planned PDL-3.000 release
> > this Summer, I would like to challenge you to measure
> > the performance you get for your PDL applications.
> >
> > I recently profiled an image display application using
> > PDL with Devel::NYTProf and discovered that one
> > simple routine was using about 80% of the time leading
> > to a 10 frames/sec update rate.  After optimizing the
> > code for the problem routine, the display update was
> > now 40 frames/sec.
> >
> > The point is that PDL is powerful, expressive, and fast
> > especially in reducing time to develop computational
> > perl applications and programs, but we could be losing
> > performance for no reason other than that we don't
> > know where it is happening.
> >
> > http://www.perl.org/about/whitepapers/perl-profiling.html
> > descibes the Devel::NTYProf module and has links to
> > presentations on its use.  Give it a try---you may discover
> > a factor of 4X speedup yourself.  If something is slowing
> > things down that could be improved, please let us know.
> >
> > Happy PDL-ing!
> > Chris
> >
> > _______________________________________________
> > Perldl mailing list
> > [email protected]
> > http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
> >
> 
> 
> _______________________________________________
> Perldl mailing list
> [email protected]
> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
> 
> _______________________________________________
> Perldl mailing list
> [email protected]
> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl

Reply via email to