Chris, is your vision of the precompilation a complete compilation to Perl 
byte-code?  Or just to complete the source filter parse step?  If the former, 
it might also be useful to have the latter available as well.

Another useful direction to go might be to create a highly Hamming-optimized 
alias for the revised nslice -- say "s" -- so that one could say
        
        $a->s(5,pdl(5,6,7),[-1,1,-1])

That strikes a nice balance between the full NiceSlice syntax (which I like a 
lot, but which appears to be quite slow with the more robust newer 
implementation) and the crazy slice syntax. What do you think?

Cheers,
Craig


On May 22, 2013, at 8: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

Reply via email to