![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Przyjaciele php.pl Postów: 195 Pomógł: 0 Dołączył: 7.07.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
przyklady:
1)
2)
macie inne? (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 16.11.2004 Ostrzeżenie: (0%) ![]() ![]() |
Hmm... zle sie wyrazilem. Chodzilo mi o to, ze samo przekazywanie duzych zmiennych przez referencje jest na ogol do kilkuset razy wolniejsze niz przez wartosc (zalezy od wielkosci obiektow). Odwrotnie niz w C, C++, Pascalu czy Basicu, gdzie referencje sa zawsze szybsze o ile tylko obiekt jest wiekszy niz ok. 8B.
Bez urazy, ale Twoj test mierzy nie tylko czas przekazania parametru, ale rowniez jego modyfikacji. Poniewaz modyfikujesz wszystkie elementy tablicy, to czas tej modyfikacji jest porownywalny z czasem kopiowania calej tablicy (przekazywanie przez wartosc). Stad masz roznice tylko nieco ponad 30%. Zmodyfikuj w funkcji 1 element tablicy to wtedy zobaczysz roznice. A nawet przy modyfikacji 1000 elementow wersja z referencjami powinna dzialac prawie 2 razy szybciej, no bo nie trzeba kopiowac tablicy (tak na zdrowy rozsadek). Moim zdaniem jest to troche dziwne... Poza tym w jednym z oficjalnych bugow w php 5 jest pokazany dosyc podobny kod, ale ze stringami i tam roznica byla kilkaset razy w czasie wykonania calego skryptu. Gosc przekazywal do funkcji dlugi lancuch tekstu, z ktorego nastepnie zwracal pierwsze 5 znakow jako wynik. Inni tez to potwierdzili. BTW: 1000 prostych operacji dodawania x 1000 to tylko 1000000. Na jakim kompie testowales, ze zajelo to az pare sekund? W C++ to samo (na Celeronie 2.4): z referencjami: 0.009 s bez referencji: 0.023 s (musialem zwiekszyc liczbe wywolan w glownej petli 100000 zeby moc jakos w miare dokladnie zmierzyc) W Javie jest podobnie. To jakby ponad 200 razy szybciej. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) I o jakiej wydajnosci php 5 my tu mowimy? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 17:27 |