![]() |
![]() |
-lukasamd- |
![]()
Post
#1
|
Goście ![]() |
Witam,
ostatnio zaintrygowało mnie jedno pytanie - jak się ma do wydajności argument przekazywany do funkcji? Powiedzmy sobie, że mam coś takiego:
Funkcja, do której przekazuję w argumencie tablicę. Z tej tablicy potrzebuję jednak tylko id, a więc w sumie lepsze wydaje się to:
No ale czasami zachodzi potrzeba użycia czegoś z tablicy poza tym id... sporadycznie ale jednak. Jak wygląda porównanie obu tych sposobów pod względem wydajności? Czy po zwróceniu wartości automatycznie argumenty przekazywane do funkcji są niszczone (lokalnie wewnątrz funkcji), czy ma to jakiś konkretny wpływ na działanie? Ten post edytował lukasamd 16.06.2010, 17:37:23 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Jeśli do jakiejś funkcji pchamy argument, to jest tworzona jego kopia lokalna dostępna dla tejże funkcji i nie ma ona wpływu na globalną wartość argumentu. Funkcja działa na kopii. A to oznacza, że jest to trochę wolniejsze, gdyż trzeba utworzyć kopię, zrobić coś na niej i na koniec jeszcze jest ona niszczona. Im większy argument lub ich więcej tym ciut dłuższe tworzenie, operowanie i usuwanie. Nie jakoś bardzo znacząco, ale użycie referencji w pewnych wypadkach pozwala te ułamki sekund oszczędzić. Zwłaszcza w przypadku operacji na dużych zestawach danych. Oczywiście musimy być świadomi tego co się dzieje w kodzie, by nie było niespodzianek: "Czemu mi się zmienia wartość zmiennej, skoro nie chcę?". Ale z czasem sam dochodzisz do tego co gdzie stosować. Kwestia obycia, otrzaskania z kodem i analizą tego co ma on robić.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 13:54 |