Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> optymalizacja kodu
warpech
post
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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Puciek
post
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%)
XX---


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]


--------------------

http://puciek.wordpress.com prywatnie o świecie
Go to the top of the page
+Quote Post
kubatron
post
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??
Go to the top of the page
+Quote Post
rzseattle
post
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 smile.gif


--------------------
"Real children don't go hoppity-skip unless they are on drugs."
Go to the top of the page
+Quote Post
adwol
post
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.
Go to the top of the page
+Quote Post
rzseattle
post
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."
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 19:22