Często używam Search
funkcji w Zend Studio
oprogramowaniu (które jest zbudowane na nim Eclipse
). Często go używam. Prawdopodobnie 10-100 razy dziennie.
Doświadczyłem tajemniczej różnorodności czasu wyszukiwania, gdy używam Wyszukaj, aby znaleźć ciąg znaków w jednym z plików w projekcie. Często potrzeba tylko sekundy, aby zakończyć wyszukiwanie. Ale czasami zajmuje to 10-20 sekund i to jest problem, który staram się rozwiązać / zdiagnozować.
Co robię:
- naciśnij Ctrl-H (otwiera menu wyszukiwania)
- wpisz mój ciąg wyszukiwania
- naciśnij Szukaj
- zwykle zajmuje to około 1 sekundy lub mniej, ale czasami zajmuje to 10-20 sekund [i to jest problem]
Co widzę
Zdarza się to sporadycznie, nie przez cały czas, ale jednak zdarza się często.
Co próbowałem:
próbowałem
- ograniczenie
Working Set
do określonych podfolderów - Ograniczone
File name patterns
do określonych rozszerzeń plików - Zdefragmentowałem mój dysk
- Program antywirusowy nie wydaje się skanować
- Korzystanie z narzędzia takiego jak
Process Monitor
nie gromadzi wielu informacji. tzn. ostatnim razem, gdy go złapałem, wydaje mi się, żesvchost
robił wiele żądań odczytu plików, ale to niewiele mi mówiło.
Pytanie
Jak zdiagnozować przyczynę spowolnienia wyszukiwania?
Statystyki
5461 plików, 352 folderów Łączny rozmiar plików na dysku 139 Mb
Zaktualizuj informacje o korzystaniu z Monitora procesów
Dwukrotnie uruchomiłem wyszukiwanie z ProcMon - za pierwszym razem było wolne, a za drugim szybko. Pierwsze wyszukiwanie trwało 40 sekund, czyli powolne . Drugie wyszukiwanie trwało 1,8 sekundy, czyli szybko . Powolne wyszukiwanie powtarza się po raz pierwszy, po tym jak nie korzystam z wyszukiwania przez jakiś czas, a potem znowu działa szybko.
Uruchomiłem diff zarówno dla zdarzeń powolnego, jak i szybkiego wyszukiwania, a wśród wszystkich CreateFile, QueryDirectory, Close File, ReadFile, QueryStandardInformationFile
operacji dla obu przebiegów różnica między dwoma przebiegami była - dodatkowe 2649 linii dla powolnego, podobnie jak:
Process Name: ZendStudio.exe
Operation: ReadFile
Path: jpgraph\src\jpgraph_plotband.php
Result: SUCCESS
Detail: Offset: 0, Length: 8,192, I/O Flags: Non-cached, Paging I/O, Priority: Normal
Zgaduję powód powolnego wyszukiwania
Domyślam się, że po raz pierwszy pliki są odczytywane, ale po raz drugi są one gdzieś w pełni buforowane i dlatego istnieje różnica prędkości. Wydaje mi się, że odczytywanie wszystkich plików za pierwszym razem zajmuje około 40 sekund i tylko 2 sekundy, aby przejść przez nie w pełni ponownie, gdy są buforowane.
W tym sensie buforowanie wyjaśnia tę niesamowicie dramatyczną różnicę prędkości. Zastanawiałem się jednak, czy mam powolny, stary lub bardzo rozdrobniony dysk, aby wyszukiwanie trwało 40 sekund, ponieważ nie mogę fantazjować, że czas wolnego wyszukiwania mieści się w dopuszczalnej normie.
Odpowiedzi:
Dennis
W przeszłości miałem problem taki jak twój i korzystałem z Monitora procesów z Sysinternals do diagnozowania mojego problemu. Ponieważ to oprogramowanie pokazuje wszystko, co dzieje się „pod maską” w systemie Windows, być może może ci pomóc.
Trudno jest znaleźć rozwiązanie w ten sposób, ale może to pomóc, jeśli masz cierpliwość i poprawnie ustawiasz filtry w Procmon. Musisz ustawić filtr dla swojego procesu (obrazu wykonywalnego), aby przechwytywał tylko to, co robi twoje oprogramowanie.
Analizując dostęp do dysku i rejestru, czasami można uzyskać wskazówki na temat problemu.
źródło