ArcObjects працює в Аддіні повільніше?


9

Я створив бібліотеку класів, яка займається деякою геопроцесорною обробкою. Аддін називає клас, який є асинхронним процесом. Я переконався, що нитка є STA, а аркобекти безпечні для потоку (тобто не передаються з аддіна). Усі аркобекти створюються в потоці.

Оскільки це бібліотека класів, я загорнув її в інтерфейс winforms, а також як доповнення. Обидва набори коду точно однакові, і тест проводили за допомогою однакових даних. Як форми winin, так і addin заповнюють код бажаними результатами, і ніяких витоків пам'яті не видно. У випадку з аддіном в цій точці немає взаємодії з періодом карти і в коді winforms немає елементів відображення або відображення.

Єдиними оновленнями інтерфейсу є оновлення діалогу прогресу як в додатку, так і в інтерфейсі. Додаток використовує док-вальне вікно (ui управління користувачем).

Проблема, яку я бачу, - це коли виклик бібліотеки з додатку, виконання коду на 5 разів повільніше, ніж той самий код, який викликається програмою winforms.

Будь-які ідеї щодо того, куди я можу шукати, щоб зрозуміти, чому це відбувається?


Чи використовуєте ви якісь - або ArcObjects одинаків ?
Кірк Куйкендалл

Так, швидкий огляд списку, і я використовую кілька об’єктів робочої області, які відкриваються для відкриття моїх класів функцій, незалежних від ArcMap, щоб вони були створені в потоці. Я створюю два фабрики робочої області (для мого вводу та виводу), потім циклічно і кешую дані на локальному рівні, використовуючи внутрішню робочу область, яку я використовую на заводі для створення. Чи повинен я створити простір пам’яті пам’яті лише один раз? Я мушу зазначити, що код не виходить з ладу і повільний, лише коли виконується в межах додатка.
Джастін Карасик

Чи створюєте ви за допомогою Activator.CreateInstanceабо з допомогою new?
Кірк Куйкендалл

Я (або був) використовую нове. Зараз я оновлюю тест на метод Activator.CreateInstance.
Джастін Карасик

Я оновив код (дякую, що вказав на це), але не бачу реальної різниці з оновленням.
Джастін Карасік

Відповіді:


1

Порівнюючи обидві версії, можливо, ви приділяєте більше часу, ніж просто час геообробки.

Можливо, у вашому автономному додатку запущені деякі процедури ініціалізації, які вже виконуються в ArcMap при запуску, наприклад, створення об’єкта MxDocument, оформлення ліцензії, створення GDB подряпин тощо.

Також може бути різниця у версії .NET Framework, яка використовується в ArcMap та вашому настільному додатку (хоча я не бачу, що спричинить 5-кратне уповільнення).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.