![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Próba... ten sam ciąg znaków, te same zmienne w tych samych miejscach w ciągu znaków i wszystko w trzech funkcja, która każda z nich zwraca ten ciąg znaków w inny sposób. Funkcja EOF to heredoc. Funkcja stringA to cudzusłów. Funkcja stringB to apostrof. Jak myślicie, która będzie najszybsza?
Próba obejmowała przejście 50 iteracji pętli dla danej funkcji i przypisanie rezultatu do zmiennej. Każde wywołanie funkcji zostało liczone za pomocą microtime() i sumowane. Na końcu wynik dzielimy przez ilość iteracji i dostajemy wynik: EOF: 0.0131 s stringA: 0.0129 s stringB: 0.0256 s Kod użyty do próby znajdziecie tutaj: http://pastebin.com/NBEaUz5a Zawsze myślałem, że apostrofy są szybsze niż cydzysłów. A tu proszę, zaskoczenie. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Bo do stringów używa się tego co w danej chwili jest najlepsze. Jak masz dużo zmiennych to używasz cudzysłowia. Jak masz mało zmiennych lub w ogóle żadnych to używasz apostrofu.
Poza tym Twój test jest źle zrobiony gdyż używasz zmiennych które nie istnieją przez co generujesz kupę błędów, które byś zobaczył gdybyś miał prawidłowo ustawione środowisko pracy :/ -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 33 Pomógł: 3 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
testowałem ten sam tekst i wyszlo ze apostrof jest i tak troche wolniejszy nawet bez zmiennych.
Apostrof jest troszke szybszy po rozpisaniu go na "linijki" tylko nie wiem co bd szybsze jak cudzysłowy sie rozpisze na liniki i wywali zmienne |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ja też testowałem to bez zmiennych i wyszło że apostrof jest ciut szybszy. za każdym razem.
Wniosek: używajmy cudzysłowia bo i tak nie ma znaczącej różnicy ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Kurcze, fakt. Mój błąd. Test był prowadzony na serwerze produkcyjnym na którym są wyłączone raporty błędów a sam o tym zapomniałem. Po poprawkach czasy wyglądają następująco:
EOF: 0.0078 s stringA: 0.0077 s stringB: 0.0194 s http://pastebin.com/9yu4A7kR |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Ilość prób jest zbyt mała, testy powinny być wymieszane (tj. powinieneś sprawdzać N razy opcję A, B, C, nie N razy A, N razy B, N razy C), powinieneś uwzględnić odchylenie standardowe.
2. Niepotrzebnie bawisz się w mikrooptymalizację. Nawet jak już znajdziesz najlepszą opcję dla danego przypadku, a przypadków tych będzie masa (bo szybkość będzie tutaj uzależniona od ilości użytych zmiennych (czyli ilości łączeń tekstów), ich długości, systemu operacyjnego, dokładnej wersji PHP i pewnie kilku innych rzeczy) i uda Ci się przyspieszyć kod o te 0.00006 sek. będzie to całkiem bezwartościowe w przypadku skryptu wykonującego się 0.05 sek. Czas, który tutaj marnujesz mógłbyś wykorzystać do optymalizacji rzeczywistych problemów. 3. Jeżeli potrzebujesz skorzystać z składni HERE/NEWDOC to już masz wskazówkę na to, że coś spieprzyłeś. ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 09:26 |