Kiedy szukam dopasowania z grep
, często zauważam, że kolejne wyszukiwanie zajmuje znacznie mniej czasu niż pierwsze - np. 25s vs. 2s. Oczywiście nie polega to na ponownym wykorzystaniu struktur danych z ostatniego uruchomienia - należy je zwolnić. Po uruchomieniu time
polecenia grep
zauważyłem ciekawe zjawisko:
real 24m36.561s
user 1m20.080s
sys 0m7.230s
Gdzie idzie reszta czasu? Czy mogę coś zrobić, aby za każdym razem działało szybko? (np. zlecenie innym procesom odczytu plików przed grep
ich przeszukaniem).
źródło
TL;DR
odpowiedź brzmi „[blok czeka na] We / Wy”.cat
+grep
nadal potrwa dłużej niżgrep
sam.cat
jako taniego pobierania z wyprzedzeniem, gdy robisz coś innego, przygotowując się nagrep
zainteresowanie.cat
szeryfytac
na ten sam efekt i większe użycie pamięci RAM: D Lub wszystkie koty z tacW środowisku sieciowej pamięci masowej mogą wystąpić względnie znaczne opóźnienia przy pierwszym dostępie do pliku znajdującego się na „filer” oddzielnym od serwera. Po uzyskaniu dostępu do tego pliku na serwerze zostanie on buforowany lokalnie, a późniejszy dostęp do danych będzie znacznie szybszy.
Oto eksperyment polegający na obliczeniu sumy kontrolnej danych pliku - nie grep. Pierwsze wywołanie jest powolne, a kolejne szybkie.
źródło