Front page | perl.perl5.porters |
Postings from October 2012
Re: hash assignment fixes and speedup are ready for review
Thread Previous
|
Thread Next
From:
Ruslan Zakirov
Date:
October 23, 2012 10:12
Subject:
Re: hash assignment fixes and speedup are ready for review
Message ID:
CAMOxC8sAfyzPfw84c+ea28VvexwrrG1Pacu6UDomq7eE4bQJ-A@mail.gmail.com
Hi,
I've rebased the branch to merge a few commits, improve commit messages.
Also, I've deleted right to left hash assignment algorithm. It's not
possible to do this without checking all elements on RHS for magic.
This needs more investigation.
So now it's just tests, fixes and refactoring with minimal performance
improvements.
https://github.com/ruz/perl5/tree/ruz/hash-assignment-v2
What should I do to get it merged into blead?
On Thu, Oct 18, 2012 at 2:28 AM, Ruslan Zakirov <ruz@bestpractical.com> wrote:
> Hi,
>
> I've finished my work on pp_aassign. I find it ready for review.
> Each commit has plenty of details, but here is short description:
>
> * scalar(%h = (1,1,1,1)) returns 4, not 2
> * warn on ($s,%h) = (1,{}) as on (%h) = ({})
> * (%h = (1)) in list context returns (1, $h{1})
> instead of (1)
> * return of (%h = (1,1,1)) in list context was incorrect
> * in list context returned keys was aliased to RHS scalars
> of aassign
> * returned list from ((%h, @a) = ...), hash on LHS followed by
> array or hash, was incorrect
> * implemented right to left algorithm for not magic hash assignment
> in scalar and void context
> * use less mortals is list context
> * in list context hash assignment return keys aliased to RHS
> when it's ok (it's not LVALUE context)
>
> You can either look at github [1] or attached patch file with
> commits separated.
>
> [1] https://github.com/ruz/perl5/tree/ruz/hash-assignment
>
> Below you can find benchmark results to make sure we either
> go faster, stay at the same level or just a little slower. Note that
> hash assignment in list+lvalue context is slower (for example
> $_++ foreach %h = (1..4)) because of bug fix. Otherwise I'm happy
> with results.
>
> Thank you for patience and help.
>
>
> long array
> Rate blead blead-mine
> blead 73005.28 - -7.37%
> blead-mine 78812.20 7.95% -
>
> long scalar
> Rate blead blead-mine
> blead 153075.99 - -12.26%
> blead-mine 174469.09 13.98% -
>
> long void
> Rate blead blead-mine
> blead 170382.79 - -2.86%
> blead-mine 175402.37 2.95% -
>
> long_dup array
> Rate blead blead-mine
> blead 154893.39 - -14.54%
> blead-mine 181247.32 17.01% -
>
> long_dup scalar
> Rate blead blead-mine
> blead 198467.19 - -63.58%
> blead-mine 544994.42 174.60% -
>
> long_dup void
> Rate blead blead-mine
> blead 263269.99 - -53.41%
> blead-mine 565065.92 114.63% -
>
> short array
> Rate blead blead-mine
> blead 419975.68 - -14.14%
> blead-mine 489133.03 16.47% -
>
> short scalar
> Rate blead blead-mine
> blead 1067882.60 - -18.15%
> blead-mine 1304638.59 22.17% -
>
> short void
> Rate blead blead-mine
> blead 1260321.03 - -10.20%
> blead-mine 1403538.00 11.36% -
>
> short_dup array
> Rate blead blead-mine
> blead 346151.55 - -14.59%
> blead-mine 405289.15 17.08% -
>
> short_dup scalar
> Rate blead blead-mine
> blead 764348.37 - -34.77%
> blead-mine 1171817.64 53.31% -
>
> short_dup void
> Rate blead blead-mine
> blead 962458.33 - -24.13%
> blead-mine 1268637.58 31.81% -
>
>
> --
> Best regards, Ruslan.
--
Best regards, Ruslan.
Thread Previous
|
Thread Next