Как узнать, что является причиной ввода / вывода в моем приложении? - PullRequest
3 голосов
/ 04 ноября 2010

Добрый день,

Я унаследовал некоторый код C # много лет назад. Я немного изменил рефакторинг, чтобы быть асинхронным. Оценивая влияние моих изменений на производительность процессора, я использовал Process Explorer , чтобы примерно посмотреть, что делает мое приложение. К моему удивлению, он, кажется, делает то, что Process Explorer сообщает как I / O. В общем, это связано с дисковым вводом-выводом или сетевым вводом-выводом. Основываясь на том, что я вижу в коде, я не могу понять явный вызов любого из этих двух источников ввода / вывода.

Мой вопрос: Каков наилучший способ определить, какая часть кода вызывает ввод / вывод? Мы используем dotTrace из JetBrains для профилирования нашего приложение, но, насколько я могу судить, оно обрабатывает только производительность процессора и памяти.

Заранее спасибо за любые указатели.

С уважением,

Эрик.

Ответы [ 4 ]

5 голосов
/ 04 ноября 2010

Process Monitor может быть вашим ответом. Обратитесь к следующему вопросу StackOverflow для получения дополнительной информации.

Как я могу профилировать файл ввода / вывода?

Опираясь на этот ответ, вы можете найти в своем решении имя файла среди всех часто читаемых или записанных файлов, найденных с помощью Process Monitor.

2 голосов
/ 04 ноября 2010

Метод стекового снимка , также называемый случайной паузой, найдет его, если это займет значительное время.

1 голос
/ 04 ноября 2010

Если код ввода-вывода управляется, вы можете загрузить символы для .net framework и установить точки останова в важных функциях (например, FileStream конструкторы и т. Д.)быть информативным, если вам это удастся.

0 голосов
/ 04 ноября 2010

В дополнение к Process Monitor я нахожу Resource Monitor на Win7 (также доступный в разделе «Производительность и надежность», я думаю, на Vista) очень полезным для диагностики замедлений, связанных с вводом / выводом. Переключитесь в режим просмотра диска и выполните сортировку по «Чтение / запись» или «Всего» (только для win7). Также следите за списком файлов, которые появляются.

...