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

Reply via email to