Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> echo() a printf(), Różnice?
Ojebejbe
post 22.10.2006, 20:28:13
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 20.08.2006

Ostrzeżenie: (0%)
-----


Witam,
Jak wszyscy wiemy są sobie dwie funkcje - echo() i printf(). Obydwie służą do wyświetlania jakichś danych.
Pytanie brzmi. Jakie są między nimi różnice.

Wiem tyle, że do printf() można dodawać różne parametry, a do echo() już nie. Chodzi mi tu głównie o szybkość działania funkcji?

Na swoim www używam printf() nie wykorzystując jego funkcji, tj.:
  1. <?php
  2. printf($tablica[$_POST['mail']]);
  3. ?>


Czy coś się zmieni jeśli użyję tu echo() ?


--------------------
Bartek 'Ojebejbe' Mackiewicz
GG#853388 | skype: b.mackiewicz
@: bartosz.mackiewicz@hot.pl

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
mokry
post 22.10.2006, 20:37:41
Post #2





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

Ostrzeżenie: (0%)
-----


echo() wyswietli po prostu string z twojej zmiennej...

za pomoca printf() mozesz sobie formatowac tekst (ilosc liczb po przecinku, konwersja liczb na systemy dwojkowe, osemkowe, hex, itd... odsylam do manuala po wiecej info... http://pl.php.net/manual/ )

Szybkosc dzialania? Jezeli echo tylko wyswietla i nieczego z zmienna nie robi to analogicznie jest szybsze winksmiley.jpg


--------------------
Pomogłem? Podziękuj proszę klikając poniżej "POMÓGŁ" ;)
Go to the top of the page
+Quote Post
My4tic
post 22.10.2006, 20:41:11
Post #3





Grupa: Zarejestrowani
Postów: 260
Pomógł: 0
Dołączył: 4.08.2005

Ostrzeżenie: (0%)
-----


Echo jest nieco szybsze. Poza tym printf zwraca true/false.


--------------------
Załóż konto na dropbox.
Go to the top of the page
+Quote Post
-ajmlovinint-
post 6.11.2011, 17:09:17
Post #4





Goście







wykonałem skromne testy:

1) TEST PRINTF

// to są moje zmienne
$zm1 = 'ZMIENNA 1';
$zm2 = 'ZMIENNA 2';
$zm3 = 'ZMIENNA 3';
$zm4 = 'ZMIENNA 4';
$zm5 = 'ZMIENNA 5';
$zm6 = 'ZMIENNA 6';

// tak chcę je wyświetlić
$format = '--a--%s--b--%s--c--%s--d--%s--e--%s--f--%s';

// a tak wykonuję serię działań

for($i=1;$i<=50000;$i++){

printf($format, $zm1, $zm2, $zm3, $zm4, $zm5, $zm6);

}

Wynik z xdebug: printf wykonywano przez ok. 260s
=====================

2) TEST ECHO


// te same zmienne

for($i=1;$i<=50000;$i++){

echo '--a--'.$zm1.'--b--'.$zm2.'--c--'.$zm3.'--d--'.$zm4.'--e--'.$zm5.'--f--'.$zm6;

}

Wynik z xdebug: echo wykonywano przez ok. 180 s.
=====================

Wniosek: echo jest szybsze od printf o ok. 30% !
Go to the top of the page
+Quote Post
-ajmlovinint-
post 6.11.2011, 17:12:55
Post #5





Goście







korekta: nie s tylko ms
ps.
sorry - zapomniałem ująć kod w [ php ].
Go to the top of the page
+Quote Post
croc
post 6.11.2011, 17:14:33
Post #6





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


Myślę, że lepiej porównywać echo z print, bo printf ma nieco inne zastosowanie.
Go to the top of the page
+Quote Post
blooregard
post 6.11.2011, 17:31:38
Post #7


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Podstawowa różnica jest taka, że echo() to konstrukcja językowa, a
printf() to funkcja, zwracająca jako rezultat wykonania długość wyświetlonego ciągu (w bajtach).

Poza tym fakt, że echo() funkcją nie jest, nie pozwala choćby na takie zabawy:
  1. $function = 'printf';
  2. $txt = "Tekst przykładowy";
  3.  
  4. echo $function($txt); // ok, to sie wykona zgodnie z oczekiwaniami


ale:

  1. $function = 'echo';
  2. $txt = "Tekst przykładowy";
  3.  
  4. echo $function($txt); // a tu sie juz wysypie...
  5.  
  6. Fatal error: Call to undefined function echo() in ....


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
-ajmlovinint-
post 6.11.2011, 21:22:18
Post #8





Goście







Cytat(croc @ 6.11.2011, 17:14:33 ) *
Myślę, że lepiej porównywać echo z print, bo printf ma nieco inne zastosowanie.


W przypadku print mamy:

  1. // zmienne identyczne jak we wcześniejszym przykładzie
  2.  
  3. for($i=1;$i<=50000;$i++){
  4.  
  5. print '--a--'.$zm1.'--b--'.$zm2.'--c--'.$zm3.'--d--'.$zm4.'--e--'.$zm5.'--f--'.$zm6;
  6.  
  7. }
  8.  
  9. // Wynik z xdebug: czas ok. 200 ms
  10.  


Czyli nadal ameryki nie odkryłem. Używać echo i nie szukać dziury w całym... (?)
Go to the top of the page
+Quote Post
-ajmlovinint-
post 6.11.2011, 21:49:42
Post #9





Goście







Tu macie coś ciekawego też:
http://www.phpbench.com/
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 01:18