Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Atomohod от 10-04-2021, 14:06:14

Название: Как повысить производительность кода?
Отправлено: Atomohod от 10-04-2021, 14:06:14
Здравствуйте,
Вопрос про повышение производительности кода. При выполнении моего кода система ограничивает производительность Автокад. Как изменить это поведение? Как поднять приоритет исполнения моего кода и повысить производительность? Обрабатываю друг за другом 6 чертежей размером по 6 Мб.

(https://i.postimg.cc/xkKVcnhY/2021-04-10-140023.jpg) (https://postimg.cc/xkKVcnhY)
Название: Re: Как повысить производительность кода?
Отправлено: Александр Ривилис от 10-04-2021, 14:28:53
Atomohod,
Никак. Так как AutoCAD использует только одно ядро процессора в большинстве операций, то дополнительной производительности ты не получишь. Увеличить производительность теоретически можно запуском параллельно нескольких AcCoreConsole, каждая из которых обрабатывала бы свой чертеж. Но и тут возможны подводные камни (например, нельзя использовать классы и методы из acmgd.dll).
Название: Re: Как повысить производительность кода?
Отправлено: Atomohod от 10-04-2021, 15:42:16
запуском параллельно нескольких AcCoreConsole
А есть попытки/примеры таких программ?
Название: Re: Как повысить производительность кода?
Отправлено: Александр Ривилис от 10-04-2021, 15:57:14
Atomohod,
https://www.google.com/search?client=firefox-b-d&q=accoreconsole+site%3Aadn-cis.org
Название: Re: Как повысить производительность кода?
Отправлено: avc от 10-04-2021, 16:16:14
Если требуется сложная вычислительная обработка, то вариант такой: считываем данные из чертежа в свои объекты, в потокобезопасные коллекции. обрабатываем параллельно-многопоточно без использования API Автокада. Записываем обратно в чертежи результаты. Причем замена даже простейших безопасных вызовов API на свой код может дать 10и кратный выигрыш в производительности.
Название: Re: Как повысить производительность кода?
Отправлено: Atomohod от 12-04-2021, 11:38:17
То есть нужно создать свои обертки над объектами Автокада? А насколько глубоко их нужно клонировать?
Название: Re: Как повысить производительность кода?
Отправлено: avc от 12-04-2021, 11:44:06
Нет. Обертки не помогут если пытаться хранить в них неуправляемые объекты DisposableWrapper и пытаться вызывать методы API из других потоков. Это все приводит к фаталам сколько не оборачивай. Надо просто извлечь НУЖНЫЕ вам данные. Например чтоб в параллельном цикле найти пересечения всех линий со всеми, достаточно запомнить координаты всех концов всех линий и больше не обращаться к API пока не будут готовы все результаты. Далеко не всегда имеет смысл программировать такой велосипед.
Название: Re: Как повысить производительность кода?
Отправлено: Привалов Дмитрий от 13-04-2021, 07:21:09
При выполнении моего кода система ограничивает производительность Автокад. Как изменить это поведение? Как поднять приоритет исполнения моего кода и повысить производительность?
А если "прогуглить" по сообщению на скриншоте?
http://master-gadgets.ru/kak-otkljuchit-prilozhenija-uwp-rabotajushhie-v

У меня общая галочка отключена и также для всех приложений.
Название: Re: Как повысить производительность кода?
Отправлено: Lemieux от 13-04-2021, 08:17:14
А как связан AutoCAD и UWP?
Название: Re: Как повысить производительность кода?
Отправлено: Привалов Дмитрий от 13-04-2021, 08:46:07
А как связан AutoCAD и UWP?
Если хочешь помощи, то сначала проверь не включено ли у тебя AutoCAD как фоновое приложение. И отпишись.
А потом уже вопросы задавай.

Вот еще ссылка
https://zen.yandex.ru/media/mywebpc.ru/chto-za-znachki-poiavilis-v-dispetchere-zadach-windows-10-april-1803-5afaa1ce5a104f8cefdf8d32
Название: Re: Как повысить производительность кода?
Отправлено: Lemieux от 13-04-2021, 09:16:37
А потом уже вопросы задавай.
Что такое UWP?
Название: Re: Как повысить производительность кода?
Отправлено: trir от 13-04-2021, 09:34:54
https://ru.wikipedia.org/wiki/%D0%A3%D0%BD%D0%B8%D0%B2%D0%B5%D1%80%D1%81%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%B0_Windows
Название: Re: Как повысить производительность кода?
Отправлено: Привалов Дмитрий от 13-04-2021, 09:36:00
Что такое UWP?
Берешь вопросик, копируешь в буфер обмена, открываешь браузер, вставляешь в поисковик и т.д......

Вопрос к Autodesk напрямую не относится.
Сконцентрируйся на сообщении windows "процесс приостановлен".
Лучше разобраться, почему и в каких случаях Windows выдает такое предупреждение и какие настройки Windows  доступны для этого.
Название: Re: Как повысить производительность кода?
Отправлено: Lemieux от 13-04-2021, 10:13:54
Берешь вопросик, копируешь в буфер обмена, открываешь браузер, вставляешь в поисковик и т.д......
Спасибо капитан!

PS Но это всё печально.