![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 3.10.2003 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
przygotowuję bibliotekę php opierającą się na 1 głównej funkcji pełniącej rolę interpretora poleceń (zdecydowały o tym względy funkcjonalne). zastanawiam się jak skonstruować bibliotekę, żeby działała wydajniej
1 możliwość: Kod function funkcja_główna ($polecenie)
{ if ($polecenie = "komenda1") { instrukcja; co wykonać; w przypadku; polecenia "komenda1"; } else if ($polecenie = "komenda2") { instrukcja; co wykonać; w przypadku; polecenia "komenda2"; } else { instrukcja; co wykonać; w przypadku; innego polecenia; } } 2 możliwość: Kod function funkcja_główna ($polecenie)
{ if ($polecenie = "komenda1") { wykonaj funkcję komenda1; } else if ($polecenie = "komenda2") { wykonaj funkcję komenda2; } else { wykonaj funkcję inna_komenda; } } function komenda1 { instrukcja; co wykonać; w przypadku; polecenia "komenda1"; } (i tak dalej) Chodzi o całkiem złożony skrypt manipulujący plikami tekstowymi na serwerze. W który z wymienionych sposobów go wykonać, żeby działał wydajniej? A może nie ma różnicy? |
|
|
![]() |
![]()
Post
#2
|
|
![]() TAO programowania Grupa: Zarejestrowani Postów: 340 Pomógł: 3 Dołączył: 25.03.2003 Skąd: ze słoika Ostrzeżenie: (30%) ![]() ![]() |
Skrypt dobry ale ja proponuję takie małe zmiany:
[php:1:cf1a142183]<?php function funkcja_główna ($polecenie) { $komendy[0] = 'blabla;; $komendy[1] = 'para'; while(sizeof($komendy) == $wykonane) { if($polecenie != $komendy[$wykonane]) { Jeśli nieznajdzie ++$wykonane; } } if ($polecenie = "komenda1") { instrukcja; co wykonać; w przypadku; polecenia "komenda1"; } if ($polecenie = "komenda2") { instrukcja; co wykonać; w przypadku; polecenia "komenda2"; } } ?>[/php:1:cf1a142183] -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 581 Pomógł: 0 Dołączył: 21.07.2003 Skąd: Jasło Ostrzeżenie: (0%) ![]() ![]() |
a nieobrazcie się o co w tym chodzi??
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 554 Pomógł: 0 Dołączył: 4.04.2002 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
[manual:4fd894d6ed]switch[/manual:4fd894d6ed]
szybsze i wedlug mnie elegantsze ![]() -------------------- "Real children don't go hoppity-skip unless they are on drugs."
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 691 Pomógł: 0 Dołączył: 6.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Ogólnie czasy są porównywalne, ale wywołanie funkcji zawsze zabiera więcej czasu niż przetwarzanie tego w miejscu, a switch jest minimalnie wolniejszy od if else.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 554 Pomógł: 0 Dołączył: 4.04.2002 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ogólnie czasy są porównywalne, ale wywołanie funkcji zawsze zabiera więcej czasu niż przetwarzanie tego w miejscu, a switch jest minimalnie wolniejszy od if else.
Cytat W instrukcji switch wartość wyrażenia jest obliczana tylko raz, a następnie jest porównywana z każdym z wyrażeń przy etykiecie case. Natomiast w instrukcji elseif wartość wyrażenia jest obliczana ponownie. Dlatego, jeśli twoje wyrażenie jest bardziej skomplikowane od zwykłego porównania, lub znajduje się w zwartej pętli (tight loop), switch może być szybszy.
kiedys mi to utkwilo we lbie i jakos tak zakodowalem wiec przyznaje - w tym przypadku wolniejszy -------------------- "Real children don't go hoppity-skip unless they are on drugs."
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 19:22 |