php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Thema geschlossen
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.11.2007, 14:37  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard Frage zu Typen und Performence

Ich habe mal eine Frage, udnzwar habe ich mir angewöhnt alle Typen zuweisungen manuell zu machen, ich habe mal ein beispiel erstellt...

PHP-Code:
<?php
# # # Handling von Typen in PHP 4,5 # # # # # # # # # # # # # # #
# Links:                                                        #
# [url]http://www.php.net/manual/de/language.types.type-juggling.php[/url] #
# # # # # # # # # # # # # # # # # # #  # # # # # # # # # # #  # # 

## Fehleranzeige an.
error_reporting(E_ALL);

## Ein String wird explizit als String gekennzeichnet und ausgegeben.
    
echo (string)'Test mit echo';
    
## Eine variable wird als String formatiert.
    
$foo = (string)'Ein String wird angelegt'
    
## Überprüfe den Type
    
echo (string)'<hr \>';
    if(
is_string($foo)) { print (string)('$foo ist ein String'); } else { print (string)('$foo ist kein String'); }
    
## umwandeln eines Types
    
settype($foo"integer");
    
## Überprüfe den Type
    
echo (string)'<hr \>';
    if(
is_string($foo)) { print (string)('$foo ist ein String'); } else { print (string)('$foo ist kein String und hat den Wert '.$foo); }
    
## Array und verschiedene String Typen
    
$foo = array();
    
$foo['string'] = (string)'ein String';
    
$foo['int'] = (int)15;
    
$foo['bool'] = (bool)143;
    
    
## Alles ausgeben
        
echo (string)'<hr \>';
        foreach((array)
$foo as $key => $value)
        {
            print (string)(
' $foo['.$key.'] ist vom Typ: '.gettype($foo[$key]).'<br \>');
        }
        
## Echtzeit änderung
    
$foo = (string)'tim';
    
    
## Ausgeben
    
echo (string)'<hr \>';
    print(
'$foo ist '.gettype($foo).'<br \>');
    print(
'$foo formatiert zu '.gettype((object)$foo).'<br \>');
    print(
'$foo formatiert zu '.gettype((int)$foo).'<br \>');
    print(
'$foo formatiert zu '.gettype((array)$foo).'<br \>');
    print(
'$foo war '.gettype($foo).'<br \>');
    
## Type-Handling innerhalb eines Strings
    
echo (string)'<hr \>';
    
$foo = (int)1234 .(string)'test';
    print(
'$foo ist '.gettype($foo).'<br \>');
    
?>
ein wenig überzogen ist dies natürlich, nun meine frage:

schadet dies der performence oder wird diese dadurch beschleunigt da php die arbeit abgenommen wird ... ?
notyyy ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 13.11.2007, 14:47  
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

Also keine Ahnung warum du dass machst aber ich denke nicht dass es die Performance merkbar schadet oder beschleunigt.

Bei PHP ist es wichtiger darauf zu achten Datenbankabfragen intelligent zu lösen etc.

So Dinge wie ob ich jetzt besser

echo "halle $var hier";

oder

echo 'hallo '.$var.' hier';

schreibe bzw. eben einen Typcast ausführe sollten die Geschwindigkeit nicht merkbar beeinflussen.

Ich frag mich nur warum du sowas machst? Nötig ist es ja auf keinen Fall. Außerdem macht es den Code schwer lesbar wenn man jedes mal über diese Typen drüberlesen muss.

Und ich würd eher denken es wird dadurch langsamer. Bei jedem Typcast muss PHP intern ja deinen Typ erstmal umwandeln in den entsprechenden Typ. Da PHP das eigentlich selbstständig macht und dies schon optimiert ist wirst du durch sowas bestimmt keinen schnelleren Code schreiben. Allein weil PHP ja erstmal alles parsen muss und auswerten muss. Das ist aber nur ne Vermutung. Muss jetzt nicht stimmen.

Aber ich würd dir raten deinen Code ohne sowas zu schreiben. Ich glaub ich hab in meiner Applikation kein einziges mal einen Typcast gebraucht.
Flor1an ist offline  
Alt 13.11.2007, 15:10  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

die frage ist ob php intern jedesmal neu überprüfen muss welchen type eine variable hat und ich ihm dies so abnehmen könnte.
übersichtlicher finde ich es so auf jedenfall, zumal man auch fehler vermeiden kann, natürlich nicht ganz so extrem wie in dem beispiel

zur optimierung habe ich auch noch nen netten link gefunden: http://reinholdweber.com/?p=3 leider beantwortet dieser meine frage nicht
notyyy ist offline  
Alt 13.11.2007, 15:51  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Lass des, hast keinen Vorteil dadurch.
Zergling-new ist offline  
Alt 13.11.2007, 15:54  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Zergling
Lass des, hast keinen Vorteil dadurch.
d.h. es bringt keine geschwindigkeitsveränderung ?
notyyy ist offline  
Alt 13.11.2007, 15:58  
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

Kann ich mir nicht vorstellen. PHP wird intern trotzdem deine Typen noch überprüfen. Damit du nicht durch typcasting einer Variable einen falschen Wert zuweisen kannst. Z.b. (string)8 + 12 dass würde dann einen Fehler ausspucken wenn es so wirklich genutzt würde. Aber es wird intern eben nochmal überprüft und dann doch wieder auf (int) gecastet. Ich denk sogar eher es wird dadurch langsamer. PHP muss so deine Sachen parsen und prüfen sowie die interne Prüfung nochmal.

Wenn du unbedingt mit Typen arbeiten willst dann such dir ne andere Programmiersprache wie Java ... da musste so richtig exakt drauf achten.
Flor1an ist offline  
Alt 13.11.2007, 16:01  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.038
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

Java finde ich gruselig, es ging mir nur darum code zu optimieren und dachte, dass man dadurch evtl. noch ein wenig stabiler skripten könnte, wenn php es intern sowieso nochmal prüft, ist es in diesem umfang mehr als unsinnig
notyyy ist offline  
Alt 13.11.2007, 16:15  
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

Also ich wüsste nicht warum das Skript "stabiler" laufen sollte wenn du die Typen immer castest.

Ich halte im übrigen nicht viel von Codeverbesserungen wie sie in deinem Link stehen. Das sind alle Dinge die vielleicht stimmen mögen.

Aber:
1. wenn du diese ganzen Tipps anwendest bist du ewig dabei nachzuschlagen wie du was nun am besten löst.

2. den Code dann zu analysieren und Fehler zu finden wird verdammt anstregend. Besser du schreibst es wie man es am besten versteht und es am einfachsten ist.

3. Angenommen du hast ein Skript mit diversen Datenbankabfragen und z.B. Schleifen in der lauter Strings ausgegeben werden.
Dann sagen wir mal die Datenbankabfragen dauern 80%, der Rest den PHP macht 20%. Und jetzt überleg mal. Lohnt es sich wirklich dass du den Teil der vlt. 3% deines Codes ausmacht, verbesserst?. Also die Schleifen und z.B. das echo() und noch einmal $i++;. Dann hast du anstatt deinen 3% vlt. nur noch 0.3% ... super und nu? Läuft dein ganzes Skript anstatt 100% nur noch 97.3% der Zeit. Lohnt sich dass dafür die Übersichtlichkeit aufzugeben? Nicht wirklich oder.

Es gibt viel wichtigere Dinge zu beachten. Wie keine DB-Abfragen in Schleifen wiederholen, Seiten bei dennen Content aus der DB gelesen wird Cachen. Auch wenn der Cache nach einer Minute wieder gelöscht wird. Bei mir hab ich dann ~500 DB Abfragen weniger auf dieser Seite die gecacht wird. UND DASS hebt wirklich die Performance!!!
Flor1an ist offline  
Alt 13.11.2007, 17:11  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Rein von der Theorie her würde ich sagen, dass dein Code langsamer ist, weil du einen PHP-Befehl mehr verwendest, den PHP implizit sowieso durchführen würde.

Aber grundsätzlich gilt, dass du deinen Code nicht zu Tode optimieren solltest. Der Flaschenhals ist sicher nicht das 0815 PHP-Geraffel (nehm ich ' oder ", mach ich Typecasting selbst, darf ich mehr als 15 Dateien includen).

Produzier sauberer, wiederverwendbaren Code, das ist die halbe Miete. Optimierungen würde ich im Hinterkopfbehalten, klar da wo es egal ist kannst du es einbauen, aber nicht auf Kosten der Leserlichkeit.
Zergling-new ist offline  
Alt 13.11.2007, 17:16  
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

Genau das wollte ich damit ausdrücken
Flor1an ist offline  
Thema geschlossen


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
Frage zu spam bots und captcha litterauspirna PHP Tipps 2008 6 20.05.2008 23:56
Smarty frage: switch($action) PHP Tipps 2007 5 30.12.2006 18:07
Frage zu einem mySQL/php/html Konstrukt &lt;Daniel&gt; PHP Tipps 2006 5 11.07.2006 16:07
Frage zu Counter PHP Tipps 2006 1 17.02.2006 21:45
Performence Seitenzugriffe PHP Tipps 2005-2 3 29.10.2005 15:57
Frage zu grafiken JohnRambo PHP Tipps 2005-2 23 16.08.2005 20:57
[Erledigt] frage PHP Tipps 2005-2 9 15.06.2005 13:22
.htaccess - Frage Stümper PHP Tipps 2005 11 30.05.2005 11:56
Performence Frage PHP-Fortgeschrittene 10 06.05.2005 19:00
Frage zu einem Editformular PHP Tipps 2005 3 25.04.2005 14:58
Frage: gibt es bei PHP sowas wie target="_blank" PHP Tipps 2005 6 20.04.2005 06:27
mal ne Frage PHP Tipps 2005 7 14.04.2005 09:46
Typen in MySQL Flor1an Datenbanken 2 13.02.2005 17:51
[Erledigt] Frage zur Funkrionen? PHP Tipps 2004-2 10 01.12.2004 09:42
[Erledigt] Frage! PHP Tipps 2004 4 27.07.2004 11:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
is_string geschwindigkeit

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:27 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.