php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.02.2011, 19:45  
Neuer Benutzer
 
Registriert seit: 30.01.2011
Beiträge: 16
PHP-Kenntnisse:
Fortgeschritten
Samuel befindet sich auf einem aufstrebenden Ast
Standard Warum ist "OB_start()" schneller?

Ich skripte gerade ein Template System und bin dabei aufs Output Buffering von Php gestoßen.

Ich ging zunächs davon aus das es dadurch langsamer läuft und "unsauber" wäre.

Nun heißt es laut dieser Website das es deutlich schneller funktioniert als alles in einer Variable zu speichern oder viele Echos zu verwenden (Was genau die alternative wäre bei meinem Template System)

http://www.ilimitado.de/blog/2007/03...output-buffer/



Nun meine Frage:

Wieso ist es auf diese Weise schneller? (Vor allem wenn wie auf dem Blog bereits ein Befehl am Anfang und einer am Ende ausreichen für einen zumindest in Zahlen deutlichen Perfomance gewinn...?)

Die Frage ist nur aus Neugier zum Verständnis gestellt :P.
Samuel ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 01.02.2011, 20:05  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Wenn du das als übung machen willst okay, aber wieviel neue räder brauch die welt noch ? ^^

Ich würde sagen das das füllen vom Ausgabepuffer weniger aufwendig ist als das Konkatinieren von Strings im Speicher.. Immer wenn du eine Variable aufrufst wird deren position im Speicher festgestellt, sie geöffnet und der text konkatiniert oder was auch immer du damit anstellst. danach wird sie wieder in den Speicher zurückgeschrieben. ob_start hält die ausgabe zum client "fest", bildet den Ausgabepuffer quasi an einer fixen speicherstelle ab.

Zumindest wäre das meine Theorie über das Warum und Wieso.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 01.02.2011, 20:07  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.268
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Weil 500x einen String senden eben mehr Zeit benötigt als 1x 500 Strings (bzw. den einen langen, der daraus wurde). Das verdeutlicht ja auch Benchmark 2. Ist allerdings eine reine Vermutung, wer weiß schon wie PHP intern so tickt.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 01.02.2011, 20:14  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Warum nen Outputbuffer schneller ist als Strings in Variablen zu speichern ist denke ich genau der Grund den tr0y genannt hat.

Und warum Outputbuffer langsamer ist als ne normale durchgehende Ausgabe liegt wohl eben daran das erst alles zwischengespeichert werden muss und dafür halt auch mehr Arbeitsspeicher benötigt wird als wenn es direkt rausgeschickt wird und sich der Server nicht mehr um das kümmern muss was schon weg ist.
Flor1an ist offline   Mit Zitat antworten
Alt 01.02.2011, 20:17  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Nuja das Outputbuffer langsamer ist als direkte Ausgabe wird in bezug auf die logik von oben ja der selbe Grund sein, wo ich kein Speicher verwende, jemand anders aber schon, bin ich der schnellere.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 01.02.2011, 20:20  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

In den eingesparten 47 Nanosekunden kannst du ja dann Kaffeetrinken gehen.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 01.02.2011, 20:41  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

ne geht nich, meine Kaffemaschiene hat Output-Buffering, wenn ich in so kurzer Zeit da hin soll, muss ich unterwegs pinkeln, weil sonst mein output nich mehr buffered.

Ich bezweifel das der Geschwindigkeitsunterscheid zwischen rum-variablieren und outputbuffering irgendeinen nennenswerten vorteil hat im bezug auf seine Template-Sache. Zeit zu sparen beim generieren von mehreren Megabyte XML Daten beispielsweise, um eine SVG per Script zusammenschrauben, okay..
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 01.02.2011, 20:47  
Erfahrener Benutzer
 
Registriert seit: 04.08.2010
Beiträge: 287
PHP-Kenntnisse:
Fortgeschritten
zwutz wird schon bald berühmt werden
Standard

normal:
PHP-Code:
ostream.open();
ostream.push('Hallo Welt');
ostream.flush();
ostream.push('Foo Bar');
ostream.flush();
ostream.close(); 
mit buffering:

PHP-Code:
ostream.open();
ostream.push('Hallo Welt');
ostream.push('Foo Bar');
ostream.flush();
ostream.close(); 
so in etwa zumindest

bei Sprachen, wo man sowas direkter mitbekommt ist es eh üblich, das flushen nicht ständig zu machen, wenn man es nicht gerade braucht.
Gerade bei PHP, wo sich das Endergebnis aus hunderten einzelnder Ausgaben zusammensetzt, kann das einen merkbaren Unterschied machen
zwutz ist offline   Mit Zitat antworten
Alt 01.02.2011, 22:14  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Der Unterschied ist eher so:

PHP-Code:
// 1
echo 'Hallo ';
echo 
'du ';
echo 
'alter ';
echo 
'Schwede!'
PHP-Code:
// 2
ob_start();
echo 
'Hallo ';
echo 
'du ';
echo 
'alter ';
echo 
'Schwede!';
ob_end_flush(): 
PHP-Code:
// 3
ob_start();
echo 
'Hallo ';
echo 
'du ';
echo 
'alter ';
echo 
'Schwede!';
$ausgabe ob_get_contents();
ob_end_clean();
echo 
$ausgabe
Ob da wirklich ein fühlbarer Geschwindigkeitszuwachs herauszukitzeln ist, glaube ich kaum.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 01.02.2011, 22:52  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Ich denke auch dass der Unterschied für fast alle Webanwendung völlig egal ist.
Flor1an ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ist ein Operator zbs. + im MySQL Statement schneller? mcfly232 PHP Tipps 2010 7 07.08.2010 01:51
[Erledigt] Schneller PHP-Upload webproger HTML, Usability und Barrierefreiheit 13 18.03.2010 13:01
fehlerfreies formular - aber wie schneller, besser, schlanker? fripon77 PHP Tipps 2009 21 25.12.2009 23:58
[SQL - Verständnissfrage] Sind Joins schneller als "normale" Datenbankabfragen? Larkin Off-Topic Diskussionen 6 20.09.2009 15:42
else Zweig weglassen - schneller? mAy^daY PHP Tipps 2008 9 27.12.2007 21:35
Schneller ein- und auskommentieren! Alpha Centauri Off-Topic Diskussionen 1 20.01.2006 22:51
was ist schneller greenrover PHP-Fortgeschrittene 6 04.10.2005 10:55
[Erledigt] Wie schneller löschen? Datenbanken 2 10.09.2005 12:19
PHP 5.1 wird deutlich schneller robo47 Off-Topic Diskussionen 1 24.06.2005 14:35
Was ist schneller? Datenbanken 8 07.02.2005 05:45
[Erledigt] Elementare Frage: Schneller durch Index? - Bin ratlos! Datenbanken 1 16.12.2004 05:23
Welche Abfrage ist schneller? Datenbanken 4 28.11.2004 19:20
was ist schneller smarty, oder normaler php code? eQuin PHP-Fortgeschrittene 2 03.09.2004 11:51
Was ist schneller? PHP Tipps 2004 2 25.07.2004 12:49
[Erledigt] schneller Zähl-Code PHP Tipps 2004 2 07.06.2004 15:19

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ob_start, ob_start(), php ob_start, ob_start();, ob_start php4 seite weiß, php direkte ausgabe schneller als buffering ausgabepuffer, ob_start langsames echo, ob start, was ist ob_start(), php upload ob_start, ob_start bei langen strings, template mit ob_get_contents();, ob_start vorteil, ob_get_contents template system, template mit ob_get_contents, php5 nanosekunden speichern, immer ob_start, ob_start upload, <? ob_start ?>, os_start php

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:25 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum