Czego lepiej użyć w PHP do dołączania elementu tablicy,
$array[] = $value;
lub
array_push($array, $value);
?
Chociaż podręcznik mówi, że lepiej jest unikać wywołania funkcji, czytałem również, że $array[]
jest znacznie wolniejszy niż array_push()
. Jakie są wyjaśnienia lub punkty odniesienia?
php
arrays
performance
Alex
źródło
źródło
Odpowiedzi:
Żadnych testów porównawczych, ale osobiście uważam, że
$array[]
jest czystszy, a uczciwe dzielenie włosów w ciągu milisekund jest raczej nieistotne, chyba że planujesz dołączyć setki tysięcy ciągów do swojej tablicy.Edycja : uruchomiono ten kod:
Pierwsza metoda
$array[]
jest prawie o 50% szybsza niż druga.Niektóre wyniki testów porównawczych:
Nie powinno to być zaskakujące, ponieważ podręcznik PHP zauważa, że:
Sposób, w jaki jest sformułowany, nie zdziwiłbym się, gdyby
array_push
był bardziej wydajny podczas dodawania wielu wartości. EDYCJA : Z ciekawości przeprowadziłem dalsze testy, a nawet przy dużej liczbie dodatków pojedyncze$array[]
połączenia są szybsze niż jedno dużearray_push
. Ciekawy.źródło
$array[]
jest to rzeczywiście znacznie szybsze, 300 ms w porównaniu z 2000 ms dla 1 mln zadań na moim komputerze. Jednak dodanie 20 elementów naraz w array_push trwało mniej więcej 20$array[] =
sekund.Głównym zastosowaniem array_push () jest to, że możesz umieścić wiele wartości na końcu tablicy.
W dokumentacji jest napisane :
źródło
Z dokumentów php dla
array_push
:źródło
Mówi się, że [] jest szybsze, ponieważ nie ma narzutu związanego z wywołaniem funkcji. Poza tym nikt tak naprawdę nie lubi funkcji tablicowych PHP ...
„Czy to ... stóg siana, igła .... czy to stóg siana igły ... ah, pieprzyć to ... [] =”
źródło
Jedyną różnicą jest to, że możesz wywołać funkcję array_push () z więcej niż dwoma parametrami, tj. Możesz w jednej chwili wypychać do tablicy więcej niż jeden element.
wydruki
1,2,3,4
źródło
Prosta deklaracja $ myarray [] będzie szybsza, ponieważ po prostu wpychasz element na stos elementów z powodu braku narzutu, jaki przyniosłaby funkcja.
źródło
Ponieważ " array_push " jest funkcją i jest wywoływana wiele razy, gdy znajduje się wewnątrz pętli, więc przydzieli pamięć do stosu. Ale kiedy używamy $ tablica [] = $ wartość, to po prostu przypisujemy wartość do tablicy.
źródło
Drugie to wywołanie funkcji, więc generalnie powinno być wolniejsze niż używanie podstawowych funkcji dostępu do tablicy. Ale myślę, że nawet jedno zapytanie do bazy danych w skrypcie przewyższy 1 000 000 wywołań
array_push()
.źródło
Chociaż pytanie dotyczyło bardziej wydajności, ludzie będą zadawać to pytanie, zastanawiając się, czy dobrą praktyką jest użycie
array_push
lub$arr[]
.Funkcja może oznaczać mniejsze wiersze dla wielu wartości:
Jednakże ,
array_push
...Będę się trzymał
$arr[]
.źródło
Po prostu chcę dodać:
int array_push(...)
zwróć nową liczbę elementów w tablicy ( doc php ). który może być przydatny i bardziej kompaktowy niż$myArray[] = ...; $total = count($myArray);
.Ma również
array_push(...)
znaczenie, gdy zmienna jest używana jako stos.źródło