Page 1 of 1

можно ли повысить приоритет основного процесса

Posted: Mon Oct 28, 2019 10:17 am
by cutecode
моя десктоповская программа делает много вычислений, там есть собственный интепретатор собственных модулей.
Так как там свой интепретатор, то на слабых процессорах она сильно тормозит, и причем в работе используется, походу, только один процессор, даже если их несколько.
можно ли как то повысить приоритет программы, или заставить работать больше процессоров?
делать отдельные потоки думаю не получится. т.к. пока не выполниться одна функция, другую запускать бесполезно
спасибо

Re: можно ли повысить приоритет основного процесса

Posted: Mon Oct 28, 2019 10:48 am
by T-Rex
Повысить приоритет можно, но это не особо действенно будет.
Не стоит также делать приоритет realtime, потому что остальные приложения не будут отвечать на действия пользователя и это еще влияет на отрисовку UI.

Повышение приоритета потока - это чисто нативный функционал, не относящийся к wxWidgets.
Windows решение.
Posix решение (или вот еще вариант).

Заставить работать приложение на всех ядрах можно только если там есть параллельные вычисления. Один поток будет работать на одном ядре. Как вариант, оптимизировать логику и, может, парсить модули параллельно, если это интерпретатор.

Еще вариант - взять клмпилятор от Intel и заморочиться с оптимизациями, иногда это помогает получить значительный прирост производительности, но времени на тонкую настройку сборки может уйти куча + он платный (не помню, есть сейчас бесплатная версия или нет). На YouTube должны быть лекции по настройке компилятора, или там доклады с конференций, тысячи их.

А, и да, можно еще через PowerShell сначала проверить, что это даст.

Re: можно ли повысить приоритет основного процесса

Posted: Mon Oct 28, 2019 5:45 pm
by amk_tt
Поскольку речь идёт об интерпретаторе, есть ещё одна сложность. Интерпретаторы, как правило, куда хуже совмещаются с параллельными потоками, чем нативные программы. В интерпретаторе, как правило, имеется много служебных данных, которые плохо разделяются между потоками.
Хотя. конечно, можно в каждом потоке запустить свой изолированный интерпретатор.

А повышение приоритета, не поможет, пока имеются свободные ресурсы процессора. При интенсивной работе поток и так получает в своё распоряжение ядро целиком.

Re: можно ли повысить приоритет основного процесса

Posted: Mon Oct 28, 2019 8:51 pm
by alys666
приоритет менять бессмысленно. высокоприоритеные системные потоки и процессы перебивать нельзя, а потоки пользовательские там все твои. если конечно рядом не крутится браузер с видосом. и еще 10 приложений.
если не хватает поизводительности, надо:
1. правильно писать саму аппу
2. паралеллить правильно написанную.

Re: можно ли повысить приоритет основного процесса

Posted: Mon Oct 28, 2019 8:55 pm
by alys666
если там самостройный интерпретатор самостройного языка, в язык надо вводить паралеллелизм, те же треды, и тогда их можно выполнять на копии виртуальной машины в другом потоке... ну и писать на этом языке в стиле паралельного исполнения.

Re: можно ли повысить приоритет основного процесса

Posted: Tue Oct 29, 2019 2:26 pm
by cutecode
да, все самописное.
Спасибо буду думать как лучше сделать.
Теперь я понял что в одном потоке может работать только одно ядро

всем спасибо