There are two issues with PDL::NiceSlice performance: (1) compile time with the source filter (2) execution time (it calls nslice() under the hood)
Part of the PDL::NiceSlice work in progress and planned to be completed for PDL3 is the ability to pre-compile source files which avoids compile time delays which can be significant for large source files. The second part is the rework of nslice() to not call slice() to do its work. In fact, it seems more reasonable to have slice() call nslice(). --Chris On Wed, May 22, 2013 at 4:19 AM, Kaj Wiik <[email protected]> wrote: > First, I was forced to use Matlab for a while (I used it before moving > perl and PDL). I had forgotten how cubersome it is to express > algorithms compared to PDL. Cheers to all PDL developers!! > > While ago (indeed with using Devel::NYTProf) I noticed that ->slice() > is much faster than NiceSlice and nslice: > > use PDL; > use PDL::NiceSlice; > use Benchmark qw(:all); > > $count = 100000; > $a = zeroes(100); > $results = timethese($count, > { > 'slice' => sub { my $b = $a->slice("5:50"); }, > 'NiceSlice' => sub { my $b = $a(5:50); }, > 'nslice' => sub { my $b = $a->nslice([5,50]); }, > }, > 'none' > ); > cmpthese( $results ) ; > > > Rate NiceSlice nslice slice > NiceSlice 48544/s -- -11% -75% > nslice 54348/s 12% -- -72% > slice 192308/s 296% 254% -- > > Also (a trivial thing) growing a piddle is very expensive, > preallocating is much faster, but that is trivial. Perhaps worth of > emphasizing in documentation. > > Cheers, > Kaj _______________________________________________ Perldl mailing list [email protected] http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
