SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #11  
Alt 09.03.2009, 01:17:15
mgutt mgutt ist offline
Anfänger
 
Registriert seit: May 2008
Beiträge: 65
AW: Regex Bedingung kann nicht erfüllt werden

Zitat:
Zitat von agent47 Beitrag anzeigen
probier es aus, das array erstellen kann man vernachlässigen das geht so schnell da wird sich nix bemerkbar machen, aber wenn du 50x preg_replace aufrufst oder einen preg_replace mit nem array von 50 werten fütterst macht sich das schon bemerkbar
Doch macht sich sehr wohl bemerkbar, denn beim Benchmark füllt der die Variablen bei jedem Schleifendurchlauf. Schau Dir die Benchmarks an, laut denen sind zwei Arrays mit jeweils 10 Werten langsamer als 10x preg_replace und das kann nur an der Definition der Variablen liegen. Ich mach nachher mal ein Benchmark dazu.

Was genau bewirkt eigentlich das "?:" in Deinem Beispiel?

Geändert von mgutt (09.03.2009 um 01:21:11 Uhr)
Mit Zitat antworten
  #12  
Alt 09.03.2009, 02:27:56
mgutt mgutt ist offline
Anfänger
 
Registriert seit: May 2008
Beiträge: 65
AW: Regex Bedingung kann nicht erfüllt werden

Hier die Ergebnisse bei jeweils 10.000 Ausführungen. Der Schnitt ergibt sich aus 100 Runden:

PHP-Code:
$search = array('#et#''#at#''#it#');
$replace = array('te''ta''ti');
$text preg_replace($search$replace$text); 
Schnitt: 0.35486629962918

PHP-Code:
$text preg_replace('#et#''te'$text);
$text preg_replace('#at#''ta'$text);
$text preg_replace('#it#''ti'$text); 
Schnitt: 0.37165603160861

PHP-Code:
$text preg_replace('#it#''ti'preg_replace('#at#''ta'preg_replace('#et#''te'$text))); 
Schnitt: 0.3565454697609

PHP-Code:
$text preg_replace(array('#et#''#at#''#it#'), array('te''ta''ti'), $text); 
Schnitt: 0.31343926429748

Wie ich erwartet habe, merkt man sehr wohl einen Unterschied. Immerhin 13% schneller.

Das nächste Benchmark wg. Deinem Vorschlag das bei URLs aufzuteilen und meiner Idee, dass in Klammern zu unterscheiden, lasse ich gleich folgen.

Geändert von mgutt (09.03.2009 um 03:07:26 Uhr)
Mit Zitat antworten
  #13  
Alt 09.03.2009, 03:02:39
mgutt mgutt ist offline
Anfänger
 
Registriert seit: May 2008
Beiträge: 65
AW: Regex Bedingung kann nicht erfüllt werden

Hier die Ergebnisse bei jeweils 1.000 Ausführungen. Der Schnitt ergibt sich aus 100 Runden (mein Originalcode):

PHP-Code:
$text preg_replace(array('#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;|:=,?@\[\]+]*)#is''#(^|[\n ])(www\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is'), array('\\1<a href="\\2" target="_blank">\\2</a>''\\1<a href="http://\\2" target="_blank">\\2</a>'), $text); 
Schnitt: 1.6178145432473

PHP-Code:
$text preg_replace('#(^|[\n ])(([\w]+?://(www\.))|([\w]+?://)|(www\.))([\w\#$%&~/.\-;|:=,?@\[\]+]*)#is''\\1<a href="http://\\4\\6\\7" target="_blank">\\2\\7</a>'$text); 
Schnitt: 1.2010276722907

Variante 2 ist 35% schneller. Ein nicht zu vernachlässigender Vorteil also.

Hier der Text, den ich für dieses Benchmark herangezogen habe:
PHP-Code:
$text "http://www.example.com/index.html Lorem ipsum dolor www.example.com sit amet, consectetuer 
sadipscing elitr, http://www.example.com/index.html sed diam nonumy eirmod tempor invidunt ut labore 
et http://www.example.com/index.html dolore magna aliquyam erat, sed diam www.example.com voluptua. 
At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, www.example.com 
no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur 
sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, 
sed diam voluptua. At vero eos et accusam et http://www.example.com/index.html justo duo www.example.com 
dolores et ea rebum. http://www.example.com/index.html Stet clita kasd gubergren, no sea takimata 
sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit www.example.com amet, consetetur 
http://www.example.com/index.html sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore 
et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea 
rebum. Stet clita kasd gubergren, no sea takimata www.example.com sanctus est Lorem 
http://www.example.com/index.html ipsum dolor sit amet. Duis autem vel http://www.example.com/index.html 
eum iriure dolor in hendrerit www.example.com in vulputate velit esse http://www.example.com/index.html 
molestie consequat, http://www.example.com/index.html vel illum dolore eu feugiat nulla facilisis 
http://www.example.com/index.html at vero eros www.example.com et accumsan et iusto odio dignissim qui 
blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor 
sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet 
http://www.example.com/index.html dolore magna aliquam www.example.com erat volutpat. Ut wisi enim ad 
minim http://www.example.com/index.html veniam, quis nostrud exerci tation 
http://www.example.com/index.html ullamcorper www.example.com suscipit lobortis nisl 
http://www.example.com/index.html ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor 
in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at 
vero eros et accumsan et iusto odio dignissim qui www.example.com blandit praesent luptatum 
www.example.com zzril delenit augue duis dolore te feugait nulla facilisi. 
http://www.example.com/index.html"


Geändert von mgutt (09.03.2009 um 03:03:00 Uhr)
Mit Zitat antworten
  #14  
Alt 09.03.2009, 09:11:28
Benutzerbild von agent47
agent47 agent47 ist offline
Anfänger
 
Registriert seit: Nov 2008
Alter: 35
Beiträge: 106
AW: Regex Bedingung kann nicht erfüllt werden

Ich hab dich wohl bissel falsch verstanden, klar ist ein einzelner ausdruck häufig schneller als viele verschiedene, das liegt an der art wie sie in php verarbeitet werden, aber wie man sieht is es schneller mit arrays als einzelne funktionen aufzurufen.

Zitat:
Was genau bewirkt eigentlich das "?:" in Deinem Beispiel?
das sind nicht einfangende Klammern, also klammern die nur zur gruppierung dienen. Bei einem preg_match würde eine sloche klammer (?: ) keinen eintrag im array der treffer erzeugen.
Mit Zitat antworten
  #15  
Alt 09.03.2009, 15:47:10
mgutt mgutt ist offline
Anfänger
 
Registriert seit: May 2008
Beiträge: 65
AW: Regex Bedingung kann nicht erfüllt werden

Zitat:
Zitat von agent47 Beitrag anzeigen
Ich hab dich wohl bissel falsch verstanden, klar ist ein einzelner ausdruck häufig schneller als viele verschiedene, das liegt an der art wie sie in php verarbeitet werden, aber wie man sieht is es schneller mit arrays als einzelne funktionen aufzurufen.
Ja aber auch nur, wenn Du das Array nicht vorher in eine Variable gepackt hast. Siehe beim 1. Benchmark Test 1 und Test 4.

Sowas dachte ich mir schon. Ich hatte letztens was mit <, > und = ausprobiert, aber es irgendwie nicht verstanden. Also : ist dafür da, damit es nie übernommen wird?

Wie genau kann man dann <, > und = erklären? Die englische Anleitung verstehe ich da ehrlich gesagt nicht.

Und dann wieder die heilige Frage. Bringts was, die Übergabe zu vermeiden?
Mit Zitat antworten
  #16  
Alt 09.03.2009, 16:49:31
Benutzerbild von agent47
agent47 agent47 ist offline
Anfänger
 
Registriert seit: Nov 2008
Alter: 35
Beiträge: 106
AW: Regex Bedingung kann nicht erfüllt werden

die neicht einfangenden klammern sind (?: ) also (?: leitet das ein,

die Klammern mit <, > und = sind Look-Around anweisungen die zum erkennen einer position gedacht sind.
Mit Zitat antworten
  #17  
Alt 09.03.2009, 17:23:59
mgutt mgutt ist offline
Anfänger
 
Registriert seit: May 2008
Beiträge: 65
AW: Regex Bedingung kann nicht erfüllt werden

Damit hast Du mir jetzt geholfen :P

Was soll Look-Around heißen. Im Englischen steht Assertion, also "Behauptung". Ist das sowas wie eine Bedingungen, also "WENN dann tu das.."?

Ich verstehe nur nicht, wie das dann größer oder kleiner als sein kann :?
Mit Zitat antworten
  #18  
Alt 09.03.2009, 17:45:45
Benutzerbild von agent47
agent47 agent47 ist offline
Anfänger
 
Registriert seit: Nov 2008
Alter: 35
Beiträge: 106
AW: Regex Bedingung kann nicht erfüllt werden

schau mal da -> http://www.regenechsen.de/phpwcms/in...ex_allg_option

Geändert von agent47 (09.03.2009 um 17:48:24 Uhr)
Mit Zitat antworten
  #19  
Alt 09.03.2009, 18:05:24
mgutt mgutt ist offline
Anfänger
 
Registriert seit: May 2008
Beiträge: 65
AW: Regex Bedingung kann nicht erfüllt werden

Zitat:
Zitat von agent47 Beitrag anzeigen
Wunderbar. Gleich mal in die Favoriten gepackt :)

Heute Nacht, bei geringer Last, mache ich dann noch ein Benchmark, ob das Ausschließen von bestimmten Ergebnisklammern Sinn macht und melde mich dann noch mal zurück.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Berechnung in einfacher Bedingung ( ) ? bitshock PHP Grundlagen 1 20.12.2007 03:34:24
regex, geht aufem localhost, aber nicht online JuliusCaesar PHP Grundlagen 14 14.12.2007 11:05:36
Link entfernen, wenn Bedingung erfüllt dgg PHP Grundlagen 4 13.09.2006 14:23:19
regex Problem morsche PHP für Fortgeschrittene und Experten 10 19.01.2005 16:29:41
regex problem - und/nicht |Coding PHP für Fortgeschrittene und Experten 2 01.08.2003 15:03:59


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:46:27 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt