![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Zaczałem pisać własny parser szablonów... Daltego też mam kilka pytan dotyczących szybkości działania skryptu... Metoda jest taka, najpierw odnajduje wszystkie bloki { } za pomoca preg_mach_all nastepnie podmieniam odpowiednie bloki po przez str_replace. Nasuwa mi się pytanie czy ciągłe operowanie na całym tekscie nie bedzie zbyt wolne...?
Czy opłaci mi się podzieliśc plik na linijki i na każdej linijce wykonywać oddzielnie preg_mach_all a nastepnie str_replace... Wykluczyło by to również problem z funkcją str_replace(nie wiem co zrobić aby podmieniła tylko jeden najbliższy blok a nie wszystkie jakie znajdzie)... a może napisać własną funkcje znajdująca po kolei nawiasy klamrowe, wyodrebniala by je za pomocą substr i strpos... Jakieś sugestie? -------------------- Warsztat: Kubuntu, PhpStorm, Opera
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Myślę, że wyrażenia regularne będą lepszym rozwiązaniem niż funkcje z algorytmem zbudowanym na strpos i substr.. po prostu wyrażenia regularne już działają z poziomu języka C
A co do najlepszego rozwiązania to może przyjżyj się jak to jest rozwiązane w smart'ach, możesz sobie przejrzeć cały kod, który tam odpowiada za rozbiór szablonu. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
No cóż... nikt mi nie odpowiadał i napisałem 3 wersje... i tak ;] Najwolniej dziala preg_match_all i str_replace bez podziału na linijki, tak w miare szybko działa własny algorytm wyszukiwania i podmieniania a najszybciej preg_mach_all i srt_replace z podziałem na linijki ;] W sumie różnice nie sa takie duże(miedzy każdym testem około 0.001s ale zawsze to coś
![]() Ten post edytował SHiP 20.07.2006, 19:22:42 -------------------- Warsztat: Kubuntu, PhpStorm, Opera
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 22:57 |