Dlaczego rdzeń używa drukowania zamiast echa?


24

Przeczytałem gdzieś i nie pamiętam gdzie, to echojest wtedy bardziej wydajny sposób przesyłania danych print.

Dlaczego rdzeń Drupala printtak często wykorzystuje ? Czy kryje się za tym jakiś szczególny powód?


1
Na marginesie: print zawsze zwraca 1 jako wartość, echo nic nie zwraca. Myślę, że może to być przydatne w niektórych przypadkach.
Bart

Co to może być za przypadek?
jayarjo

Też się zastanawiałem! Dobre pytanie!
aendrew

Odpowiedzi:


25

echojest tylko szybszy w środowiskach akademickich. Różnica jest bardzo marginalna. Szybki test porównawczy, który właśnie zrobiłem: czas pobierania jednego wiersza z tabeli zawierającej więcej niż 2000 węzłów wynosi 1 jednostkę.

Aby uzyskać poprawę o 1 jednostkę, musiałbym zastąpić około 3.700.000 (ponad 3 miliony) printwyciągów echo. Innymi słowy, jeśli chcesz poprawić wydajność, nie jest to dobre miejsce na rozpoczęcie.

Pierwszy z nich ma pewne zalety, ponieważ printmożna go stosować w znacznie szerszym zakresie przypadków echo. Pozostawia ci trzy opcje:

  • Zawsze używaj print
  • Użyj, o echoile to możliwe, i włącz rezerwęprint
  • Użyj echozawsze i popraw kod, jeśli echonie można go użyć, aby go użyć

Drupal domyślnie działa na pierwszym.

Aby odpowiedzieć na twoje aktualne pytanie, dlaczego wybrano to: Nie było. Po prostu urósł w ten sposób.


Czy możesz podać przykład, kiedy echo nie może być użyte? Po prostu nie mogę sobie teraz wyobrazić.
jayarjo

6
Najbardziej oczywiste jest if (! print some_method() ) {print some_other_method()}. Ponieważ print zwraca PRAWDA, jeśli faktycznie coś wydrukowało. Echo nic nie zwraca, dlatego też jest szybsze. Innym przykładem, który zobaczysz, jest return print $somevaluekoniec metody zwracania statusu.
berkes
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.