![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 346 Pomógł: 23 Dołączył: 28.11.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie,
potrzebuje jakiegos sposobu by przyspieszyc przeszukiwania duzych plikow tekstowych. Chcialbym wyszukiwac zadana fraze plus 5 linijek z gory i z dolu. Obecnie wykorzystujac takie zapytanie: Kod /(.+\r\n|.+\n){5}.+fraza_fraza.+(\r\n.+|\n.+){5}/ otrzymuje prawidlowy wynik, lecz przeszukanie jednego wyniku zajmuje b. duzo czasu. Mozna byloby to jakos usprawnic? Jakies wczesniejsze zawezenie pola poszukiwania? Wyciecie za pomoca innych funkcji? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
A próbowałeś pobawić się z strpos?
A dokładniej to fopen + odczytanie linii + strpos Ten post edytował wookieb 6.02.2010, 18:28:42 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 251 Pomógł: 34 Dołączył: 7.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Możesz również spróbować przeszukiwać plik dzieląc go na części, operując potem na tych nich i łącząc wyniki pod koniec. W tym samym czasie przeszukujesz linijki 0-1000, 1001 - 2000 etc. O ile działa to przy wszelkiego rodzaju sortowaniach zewnętrznych, to akurat tutaj po prostu strzelam. A nóż pomoże. Proponuję sprawdzić szybkość wykonywania skryptu poprzez microtime() i porównać czasy.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 346 Pomógł: 23 Dołączył: 28.11.2004 Ostrzeżenie: (0%) ![]() ![]() |
Proponuję sprawdzić szybkość wykonywania skryptu poprzez microtime() i porównać czasy. W moim przypadku, gdzie pliki z danymi waza niezmiernie nieoptymalnie, swobodnie mozna byloby zastosowac time() lub nawet date('H') ![]() Skutecznie rozwiazuja problem petelki, strpos. Dziekuje i pozdrawiam. Ten post edytował no_face 9.02.2010, 22:07:47 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 08:58 |