Я написал плагин для ESRI ArcEditor, который выполняет некоторые проверки правильности в дорожной сети. Чтобы проверить, все ли правила соблюдаются, в основном выполняется целая куча различных пересечений, с некоторыми буферизацией и конвертами и т. Д. На выбранных объектах.
Это было написано на C #.
Теперь, что я замечаю, так это то, что для выполнения заданных алгоритмов на выбранных функциях действительно требуется много времени. Я загрузил профилировщик ANTS и оптимизировал узкие места, пока больше ничего не могу сделать.
Странная вещь, которую я заметил, заключается в том, что ANTS практически не сообщала об использовании процессора на временной шкале - плоская линия. Затем я проверил, что процессор остается ниже примерно 10-15% с помощью диспетчера задач, когда выполняется операция проверки. Это не имеет смысла для меня. Почему он не использует доступные циклы процессора?
Не происходит ввода-вывода, поскольку он загружает все из ArcSDE. Я также проверил, что во время процесса валидации нет заметного сетевого трафика, полагая, что он, возможно, ожидал комманд между ArcEditor и сервером.
Затем я проверил процессоры на сервере, чтобы удостовериться, что ему не была делегирована никакая обработка, но его использование ЦП оставалось стабильным на 1% во время процесса проверки.
Тогда я подумал, что ArcEditor, возможно, подавляет приоритет, с которым могут работать его плагины, или что-то в этом роде. Поэтому я включил математическую операцию, которая бы максимально загружала процессор примерно на 10 секунд, вместо процедуры проверки, и он сделал именно это. Загрузка процессора была стабильной - чуть более 50%, что имеет смысл, так как математическая операция максимально использовала бы одно из ядер моего Core 2 Duo. Так что не повезло. И доступно более 1 ГБ ОЗУ.
Наконец, я пытался найти проблему с perfmon, но мне не повезло. У меня не было большого опыта с этим, но не могу найти ничего плохого.
Это из-за интерфейса ArcObjects COM? Хотя я также проверил счетчики .NET Interop с perfmon.
Я в растерянности.
Так что любая помощь или советы будут с благодарностью.