У меня запущен процесс, открывающий файлы TIF. Каждый файл TIF - это всего лишь одна обычная страница, и каждый из них может иметь размер 100 КБ. Каждый раз, когда он открывает файл TIF, он пытается прочитать штрих-код в определенной области на странице. После считывания штрих-кода в указанной области он закрывает файл и открывает следующий файл. По какой-то причине этот процесс занимает около 3 секунд на файл. Это слишком долго для нас. Что мы можем сделать, чтобы это ускорить? Сервер, на котором он работает, представляет собой четырехъядерный процессор с тактовой частотой 2,1 ГГц и большим объемом оперативной памяти. Я проверил процессор и память, и все кажется недозагруженным. Как я могу найти узкое место? Как мне ускорить этот процесс?
работает на Windows Server 2008
В Windows Server 2008 высокоуровневым представлением ресурсов является монитор ресурсов. Даже младший сервер 4-летней давности может открывать файлы быстрее, чем вы описываете, поэтому я ожидаю, что это будет и в коде.
Для системного администратора (кого-то, кто не является разработчиком) ваши общие «глубокие» инструменты, позволяющие увидеть, что происходит, - это использовать инструменты Microsoft Sysinternals. Обозреватель процессов и Монитор процесса. Process Explorer позволит вам щелкнуть правой кнопкой мыши по запущенной программе и изучить производительность этого процесса, а также увидеть потоки, строки и т. Д. Process Monitor позволит вам увидеть все операции чтения / записи в файловую систему и реестр, выполняемые процессом. .
Если файлы размещены в SAN или NAS, вы можете посмотреть здесь на потенциальную задержку в сети.
У вашей программы есть файл журнала? Можешь включить лог?
Проблема, похоже, связана либо с вводом-выводом (возможно, с сетью, если она размещена так), либо с самим программным обеспечением. Сначала я проверил бы эти две части.
В зависимости от специфики я бы начал с профилирования или тестирования приложения. Если возможно, профилирование должно дать вам хорошее представление о том, что приложение делает в течение 3 секунд. В качестве альтернативы вы можете измерить скорость работы приложения в различных условиях (обычный TIF, полностью черный TIF, белый TIF, просто загружая TIF, но не разбирая его и т. Д.). Это также должно дать вам представление об узком месте.
Нашел ваше описание, однако, я предполагаю, что такая операция будет ограничена приложением и ЦП. Хорошо спроектированное приложение не должно занимать 3 секунды, чтобы проанализировать штрих-код в фиксированном месте даже на ЦП низкого уровня.