Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [rexp] backreference - problem z wydajnoscia
rzseattle
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 554
Pomógł: 0
Dołączył: 4.04.2002
Skąd: Tychy

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


Witam

W mojch szablonach wszechobecne są znaczniki blokow typu:
Kod
<cos:cos param1="1" param2="2"> jakis sobie tekst</cos:cos>

Aby wychwycic te bloki uzywalem wyrazenia:
  1. <?php
  2. $exp = "/<(w+):(w+) *(.*?) *>(.*?)</1:2 *>/ms";
  3. $source = preg_replace_callback( $exp, array( &$this, 'replaceBlock' ), $in );
  4. ?>


Jednak przy wiekszych stringach preg_replace_callback potrafi sie wykonywac i 12 sekund. Potem wyniki sa keszowane i dla end usera to nie ma znaczenia, jednak dla administratora przebudowywującego strone jest to nie do przyjęcia.

Czy ktoś juz zagłębiał sie w problem wykrywania bloków ( autorowie systemow szablonów mowa o was smile.gif ) i dysponuje prostym wyrażeniem lub algorytmem które by rozwiązało ten problem?

pozdrawiam
rzSeattle


--------------------
"Real children don't go hoppity-skip unless they are on drugs."
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
FiDO
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


No wiec nie wytrzymalem zbyt dlugo i w chwili wolnej zrobilem sobie maly tescik smile.gif
Regexpa skopiowalem z pierwszego posta nie robiac (celowo) zadnych zmian.
Jako przykladowy szablon uzylem wygenerowany przez siebie pliczek ok 10KB z dosc duza iloscia elementow blokowych (tak co kilka linijek sie pojawialy srednio).
Testowalem to na P3 450, na ktorym moj obecny projekt generuje sie ponad 10x dluzej niz na moim kompie, wiec spodziewalem sie zdazyc zjesc kolacje w tym czasie winksmiley.jpg
NIestety nie udalo sie.. zjesc kolacji w tym czasie, bo po odpaleniu tego w przegladarce okazalo sie, ze czas wykonania calosci wynosil ok 0.0003 sekundy. Tak wiec albo mierzyles nie ten kawalek kodu co trzeba, albo masz cos "popsute" z systemem lub php, albo cos jeszcze innego co mi teraz nie przychodzi do glowy.
W kazdym razie przynajmniej udalo mi sie zdementowac powolnosc back-references.


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 21.08.2025 - 07:50