2012-08-25 11 views
6

Najpierw dam link do kodu: http://ideone.com/6k8R6

Na moim Intel Core 2 Duo, PHP 5.4.6 wynik jest:
usort: 7.8763520717621
quicksort: 2.9220938682556
(usort jest wolniejszy niż quicksort)

Ale na skutek Ideone jest:
usort: 0.0313699245453
quicksort: 0.0621209144592
(usort jest szybszy niż quicksort)

Sprawdziłem również kod na komputerze mojego przyjaciela (Intel Core i5, PHP 5.4.4), a także usort był również szybszy.

Moje pytanie brzmi: dlaczego czasami quicksort jest szybszy od usort, a czasami usort jest szybszy?PHP prędkość usort

+0

Podejrzewam, że to dlatego, że używasz naprawdę małego zestawu danych na ideone i że zaimplementowałeś quicksort w czystym PHP, a usort jest funkcją biblioteczną. –

+0

Wierzę, że jest to oparte na procesorze z powodu paralelizacji. Pamiętam, że czytałem coś o tym ... hmmm, myślę, że to faktycznie była wikipedia: http://pl.wikipedia.org/wiki/Quicksort ale moja głowa skrzywdziłoby to, żeby to przeczytać. – Sammaye

+0

Aby dodać do tego - twój zestaw danych składa się z czterech elementów. To nawet nie wystarczy, aby właściwie zademonstrować quicksort! – duskwuff

Odpowiedz

1

Quicksort jest uważany za jeden z najszybszych algorytmów sortowania nieposortowanych danych i najwolniejszy z już posortowanych (lub prawie posortowanych) danych.

+0

Kod był taki sam na każdym komputerze i funkcji 'set ($ uzytkownik);' używany do ustawiania tablicy na niesortowany stan przed każdym sortowaniem (przepraszam za błędy gramatyczne, ale jestem z Polski i jest już dość późno;)). –