Я часто використовую Search
функцію всередині Zend Studio
програмного забезпечення (яке побудовано поверх Eclipse
). Я цим багато користуюся. Напевно, 10-100 разів на день.
Я відчув таємничу різноманітність у часі пошуку, коли використовую Пошук, щоб знайти рядок в одному з файлів всередині Проекту. Часто для заповнення пошукового запиту потрібна лише секунда. Але іноді це займає 10-20 секунд, і саме це я прагну вирішити / діагностувати.
Що я роблю:
- натисніть Ctrl-H (відкриває меню пошуку)
- введіть мою пошукову рядок
- натисніть Пошук
- зазвичай це займає близько 1 секунди або менше, але іноді це займає 10-20 секунд [і це питання]
Що я бачу
Це трапляється епізодично, не весь час, але все ж часто.
Що я спробував:
я намагався
- обмеження
Working Set
на певні папки - Обмежено
File name patterns
конкретними розширеннями файлів - Знешкоджений мій привід
- Схоже, антивірус не сканує
- Використання такого інструменту, як
Process Monitor
не збирає багато інформації. тобто останній раз, коли я його спіймав, я думаю,svchost
що він робив багато запитів на читання файлів, але це мало що сказало мені.
Питання
Як я можу діагностувати причину уповільнення пошуку?
Статистика
5461 Файли, 352 папки Загальний розмір файлів на 139 Мб на диску
Оновлення використання монітора процесів
Я два рази запустив свій пошук із ProcMon - перший раз був повільним, а другий - швидким. Перший пошук тривав 40 секунд, але повільний . Другий пошук тривав 1,8 секунди, так само швидкий . Повільний пошук повторюється перший раз, після того як я деякий час не використовую пошук, а потім він знову швидко запускається.
Я провів різницю як для повільних, так і для швидких пошукових подій, і серед усіх CreateFile, QueryDirectory, Close File, ReadFile, QueryStandardInformationFile
Операцій для обох прогонів різниця між двома прогонами була - додаткові 2649 рядків для повільних, схожих на так:
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
Моя здогадка про причину повільного пошуку
Я здогадуюсь, що перший раз, можливо, фактично читаються файли, але вдруге вони десь повністю кешовані, і тому є різниця в швидкості. Я думаю, що для того, щоб прочитати всі файли вперше, потрібно близько 40 секунд, і лише після 2-х секунд, щоб переглядати їх повністю, коли вони кешовані.
У цьому сенсі кешування пояснює цю неймовірно драматичну різницю швидкостей. Мені все ж варто замислитися, якщо у мене повільний, старий або погано фрагментований диск для пошуку займає 40 секунд, тому що я не можу вважати, що повільний термін пошуку знаходиться в межах прийнятної норми.