I thought I remembered a quick example implementation with incompatible syntax but no real follow through, certainly not enough to lead to comparative performance measurements like in this thread.
--Chris On Fri, May 24, 2013 at 9:06 AM, Mark Grimes <[email protected]> wrote: > Has anyone ever looked into switching from source filters for > NiceSlice to something built on Devel::Declare (or similar)? I'm not > sure about the performance impacts, but it might help at compile time. > In addition, there seems to be a consensus within the Perl community > that that is the most robust, modern method of extending the language. > > I don't know enough about the internals of PDL or Devel::Declare to > suggest anything; just a question. > > > On Wed, May 22, 2013 at 10:16 AM, Chris Marshall <[email protected]> > wrote: >> 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 > > _______________________________________________ > 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
