Re: com php-src: Faster sorting algo: UPGRADING Zend/Makefile.am Zend/tests/methods-on-non-objects-usort.phpt Zend/zend_API.c Zend/zend_hash.c
Zend/zend_hash.h Zend/zend_ini.c Zend/zend_llist.c Zend/zend_qsort.c Zend/zend_qsort.h Zend/zend_sort.c Zend/zend_sort.h Zend/zend_ts_hash.c
Zend/zend_types.h configure.in ext/ereg/ereg.c ext/intl/collator/collator_sort.c ext/phar/dirstream.c ext/phar/phar_internal.h ext/standard/array.c
ext/standard/info.c ex
| From: | Simon J Welsh | Date: | Fri, 16 Jan 2015 23:54:54 +0000 |
| Subject: | Re: com php-src: Faster sorting algo: UPGRADING Zend/Makefile.am Zend/tests/methods-on-non-objects-usort.phpt Zend/zend_API.c Zend/zend_hash.c Zend/zend_hash.h Zend/zend_ini.c Zend/zend_llist.c Zend/zend_qsort.c Zend/zend_qsort.h Zend/zend_sort.c Zend/zend_sort.h Zend/zend_ts_hash.c Zend/zend_types.h configure.in ext/ereg/ereg.c ext/intl/collator/collator_sort.c ext/phar/dirstream.c ext/phar/phar_internal.h ext/standard/array.c ext/standard/info.c ex |
||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-80666@lists.php.net to get a copy of this message | ||
That’s an invalid comparison function. It causes the current usort to reverse sort the array and I
see no problem with that changing (you’re saying that a value for $a less than $b is in fact
greater than it, and a value of $b less than or equal to $a is equal to it).
> On 17/01/2015, at 06:17, Rasmus Lerdorf <rasmus@lerdorf.com> wrote:
>
> I think this broke usort() of more than 16 elements.
>
> eg.
>
> <?php
> $pr = [ [ 'id' => 'aaa', 'date' => 'Oct 8, 2006'
> ],
> [ 'id' => 'bbb', 'date' => 'Nov 14,
> 2008'],
> [ 'id' => 'ccc', 'date' => 'Dec 19,
> 2014'],
> [ 'id' => 'ddd', 'date' => 'Feb 4, 2010'],
> [ 'id' => 'eee', 'date' => 'Jul 7, 2013'],
> [ 'id' => 'fff', 'date' => 'Mar 6, 2002'],
> [ 'id' => 'ggg', 'date' => 'Mar 1, 2001'],
> [ 'id' => 'hhh', 'date' => 'Aug 8, 1999'],
> [ 'id' => 'iii', 'date' => 'Sep 5, 2007'],
> [ 'id' => 'jjj', 'date' => 'Apr 13,
> 2004'],
> [ 'id' => 'kkk', 'date' => 'Mar 6, 1996'],
> [ 'id' => 'lll', 'date' => 'Mar 6, 1997'],
> [ 'id' => 'mmm', 'date' => 'Mar 6, 1998'],
> [ 'id' => 'nnn', 'date' => 'Mar 6, 1999'],
> [ 'id' => 'ooo', 'date' => 'Mar 7, 1996'],
> [ 'id' => 'ppp', 'date' => 'Mar 7, 1997'],
> [ 'id' => 'qqq', 'date' => 'Mar 7, 2002']
> ];
>
> function cmp($a,$b) {
> return strtotime($a['date']) < strtotime($b['date']);
> }
> usort($pr,'cmp');
> print_r($pr);
>
> Remove the qqq element and it sorts ok.
>
> -Rasmus
>
> On 01/14/2015 02:02 AM, Xinchen Hui wrote:
>> Commit: 2193de0d185eb9d35e4dd7b93cf69d509b0526b9
>> Author: Xinchen Hui <laruence@gmail.com> Wed, 14 Jan 2015 17:22:58 +0800
>> Parents: ade7a410403d7ec3fc1579bee3b890b1ce549eec
>> Branches: master
>>
>> Link:
>> http://git.php.net/?p=php-src.git;a=commitdiff;h=2193de0d185eb9d35e4dd7b93cf69d509b0526b9UcÍþ0 #
>>
>>
>> Log:
>> Faster sorting algo
>>
>> Changed paths:
>> M UPGRADING
>> M Zend/Makefile.am
>> M Zend/tests/methods-on-non-objects-usort.phpt
>> M Zend/zend_API.c
>> M Zend/zend_hash.c
>> M Zend/zend_hash.h
>> M Zend/zend_ini.c
>> M Zend/zend_llist.c
>> D Zend/zend_qsort.c
>> D Zend/zend_qsort.h
>> A Zend/zend_sort.c
>> A Zend/zend_sort.h
>> M Zend/zend_ts_hash.c
>> M Zend/zend_types.h
>> M configure.in
>> M ext/ereg/ereg.c
>> M ext/intl/collator/collator_sort.c
>> M ext/phar/dirstream.c
>> M ext/phar/phar_internal.h
>> M ext/standard/array.c
>> M ext/standard/info.c
>> M ext/standard/string.c
>> M ext/standard/tests/array/002.phpt
>> M ext/standard/tests/array/array_intersect_variation9.phpt
>> M ext/standard/tests/array/array_unique_variation8.phpt
>> M ext/standard/tests/array/array_user_key_compare.phpt
>> M ext/standard/tests/array/arsort_variation11.phpt
>> M ext/standard/tests/array/arsort_variation3.phpt
>> M ext/standard/tests/array/arsort_variation7.phpt
>> M ext/standard/tests/array/arsort_variation9.phpt
>> M ext/standard/tests/array/asort_variation11.phpt
>> M ext/standard/tests/array/asort_variation3.phpt
>> M ext/standard/tests/array/asort_variation7.phpt
>> M ext/standard/tests/array/asort_variation9.phpt
>> M ext/standard/tests/array/bug36975.phpt
>> M ext/standard/tests/array/bug50006.phpt
>> M ext/standard/tests/array/bug50006_1.phpt
>> M ext/standard/tests/array/bug50006_2.phpt
>> M ext/standard/tests/array/krsort_variation8.phpt
>> M ext/standard/tests/array/krsort_variation9.phpt
>> M ext/standard/tests/array/ksort_variation8.phpt
>> M ext/standard/tests/array/ksort_variation9.phpt
>> M ext/standard/tests/array/natcasesort_basic.phpt
>> M ext/standard/tests/array/natcasesort_variation2.phpt
>> M ext/standard/tests/array/natcasesort_variation4.phpt
>> M ext/standard/tests/array/natcasesort_variation9.phpt
>> M ext/standard/tests/array/rsort_variation11.phpt
>> M ext/standard/tests/array/rsort_variation9.phpt
>> M ext/standard/tests/array/sort_variation11.phpt
>> M ext/standard/tests/array/uasort_basic2.phpt
>> M ext/standard/tests/array/uasort_object2.phpt
>> M ext/standard/tests/array/uasort_variation11.phpt
>> M ext/standard/tests/array/uasort_variation6.phpt
>> M ext/standard/tests/array/usort_variation6.phpt
>> M ext/standard/tests/strings/get_html_translation_table_basic6.phpt
>> M main/php.h
>> M sapi/cgi/cgi_main.c
>> M sapi/cli/php_cli.c
>> M sapi/fpm/fpm/fpm_main.c
>> M sapi/phpdbg/phpdbg_wait.c
>> M win32/build/config.w32
>>
>>
>>
>
>
---
Simon Welsh
Admin of http://91carriage.com/ – Specialised SilverStripe
hosting