Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: optymalizacja kodu
Forum PHP.pl > Forum > PHP
warpech
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?
Puciek
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]
kubatron
a nieobrazcie się o co w tym chodzi??
rzseattle
[manual:4fd894d6ed]switch[/manual:4fd894d6ed]
szybsze i wedlug mnie elegantsze smile.gif
adwol
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.
rzseattle
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.