Re: Re: Faster zend sorting implementation
| From: | Xinchen Hui | Date: | Mon, 05 Jan 2015 17:36:03 +0000 |
| Subject: | Re: Re: Faster zend sorting implementation | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-80189@lists.php.net to get a copy of this message | ||
Hey:
> On Jan 6, 2015, at 1:27 AM, Julien Pauli <jpauli@php.net> wrote:
>
>> On Mon, Jan 5, 2015 at 6:09 PM, Xinchen Hui <laruence@php.net> wrote:
>> On Tue, Jan 6, 2015 at 1:08 AM, Xinchen Hui <laruence@php.net> wrote:
>> > Hey:
>> >
>> > I was working on zend_qsort improvement. but I got a problem need
>> > to be disscussed with you fist..
>> first
>> >
>> > as we know, previously zend_qsort is not a stable sorting algo.
>> >
>> > my draft patch (which already get 0.1% IRs reduce in wordpress)
>> > is kindof a stable sorting algo, you can find it here
>> > (https://github.com/laruence/php-src/compare/zend_sort)
>> >
>> > so, there is a bc break, like for :
>> >
>> > $array = array("o", "O");
>> > sort($array, SORT_STRING|SORT_FLAG_CASE);
>> >
>> > var_dump($array);
>> >
>> > previously implementation does the swap:
>> >
>> > array(2) {
>> > [0]=>
>> > string(1) "O"
>> > [1]=>
>> > string(1) "o"
>> > }
>> >
>> > but new implementation doesn't not:
>> does not
>> >
>> > array(2) {
>> > [0]=>
>> > string(1) "o"
>> > [1]=>
>> > string(1) "O"
>> > }
>
> Hum, I dont think such a BC is acceptable.
>
I am not sure if you get the problem?
"O" and "o" are equal is that script
The flags means using case-insensitive string sorting mean
Thanks
> There are tons of userland code out there relying on alpha case sorting that could get
> impacted....
> IMO :-)
>
> Q: why extract the swap function from the qsort algo ? Is there an interest of replacing it at
> runtime ?
>
>
> Julien.P