Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Argument funkcji a wydajność?, Ograniczony vs pełne dane
-lukasamd-
post
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:

  1. function my_function($arg)
  2. {
  3. $id = $arg['id'];
  4. // Tutaj cos sie dzieje z uzyciem id
  5. }
  6.  
  7.  
  8. $arg = array();
  9.  
  10. // Tu trafiaja do $arg dane, np. z bazy
  11.  
  12.  
  13. $var = my_function($arg);


Funkcja, do której przekazuję w argumencie tablicę. Z tej tablicy potrzebuję jednak tylko id, a więc w sumie lepsze wydaje się to:

  1. function my_function($arg)
  2. {
  3. // Tutaj cos sie dzieje z uzyciem arg
  4. }
  5.  
  6. $arg = array();
  7.  
  8. // Tu trafiaja do $arg dane, np. z bazy
  9.  
  10.  
  11. $var = my_function($arg['id']);


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Zyx
post
Post #2





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


PHP posiada coś takiego, jak leniwe kopiowanie, tj. faktyczna kopia wykonywana jest dopiero wtedy, gdy dane mają być zmienione. Jeśli pchasz jakąś wartość jedynie do odczytu, zachowuje się to tak, jak w przypadku referencji... z tego właśnie powodu używanie referencji do optymalizowania skryptów w PHP mija się z celem (IMG:style_emoticons/default/smile.gif) .
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 21:02