моя десктоповская программа делает много вычислений, там есть собственный интепретатор собственных модулей.
Так как там свой интепретатор, то на слабых процессорах она сильно тормозит, и причем в работе используется, походу, только один процессор, даже если их несколько.
можно ли как то повысить приоритет программы, или заставить работать больше процессоров?
делать отдельные потоки думаю не получится. т.к. пока не выполниться одна функция, другую запускать бесполезно
спасибо
можно ли повысить приоритет основного процесса
- T-Rex
- Moderator
- Posts: 1248
- Joined: Sat Oct 23, 2004 9:58 am
- Location: Zaporizhzhya, Ukraine
- Contact:
Re: можно ли повысить приоритет основного процесса
Повысить приоритет можно, но это не особо действенно будет.
Не стоит также делать приоритет realtime, потому что остальные приложения не будут отвечать на действия пользователя и это еще влияет на отрисовку UI.
Повышение приоритета потока - это чисто нативный функционал, не относящийся к wxWidgets.
Windows решение.
Posix решение (или вот еще вариант).
Заставить работать приложение на всех ядрах можно только если там есть параллельные вычисления. Один поток будет работать на одном ядре. Как вариант, оптимизировать логику и, может, парсить модули параллельно, если это интерпретатор.
Еще вариант - взять клмпилятор от Intel и заморочиться с оптимизациями, иногда это помогает получить значительный прирост производительности, но времени на тонкую настройку сборки может уйти куча + он платный (не помню, есть сейчас бесплатная версия или нет). На YouTube должны быть лекции по настройке компилятора, или там доклады с конференций, тысячи их.
А, и да, можно еще через PowerShell сначала проверить, что это даст.
Не стоит также делать приоритет realtime, потому что остальные приложения не будут отвечать на действия пользователя и это еще влияет на отрисовку UI.
Повышение приоритета потока - это чисто нативный функционал, не относящийся к wxWidgets.
Windows решение.
Posix решение (или вот еще вариант).
Заставить работать приложение на всех ядрах можно только если там есть параллельные вычисления. Один поток будет работать на одном ядре. Как вариант, оптимизировать логику и, может, парсить модули параллельно, если это интерпретатор.
Еще вариант - взять клмпилятор от Intel и заморочиться с оптимизациями, иногда это помогает получить значительный прирост производительности, но времени на тонкую настройку сборки может уйти куча + он платный (не помню, есть сейчас бесплатная версия или нет). На YouTube должны быть лекции по настройке компилятора, или там доклады с конференций, тысячи их.
А, и да, можно еще через PowerShell сначала проверить, что это даст.
Re: можно ли повысить приоритет основного процесса
Поскольку речь идёт об интерпретаторе, есть ещё одна сложность. Интерпретаторы, как правило, куда хуже совмещаются с параллельными потоками, чем нативные программы. В интерпретаторе, как правило, имеется много служебных данных, которые плохо разделяются между потоками.
Хотя. конечно, можно в каждом потоке запустить свой изолированный интерпретатор.
А повышение приоритета, не поможет, пока имеются свободные ресурсы процессора. При интенсивной работе поток и так получает в своё распоряжение ядро целиком.
Хотя. конечно, можно в каждом потоке запустить свой изолированный интерпретатор.
А повышение приоритета, не поможет, пока имеются свободные ресурсы процессора. При интенсивной работе поток и так получает в своё распоряжение ядро целиком.
Re: можно ли повысить приоритет основного процесса
приоритет менять бессмысленно. высокоприоритеные системные потоки и процессы перебивать нельзя, а потоки пользовательские там все твои. если конечно рядом не крутится браузер с видосом. и еще 10 приложений.
если не хватает поизводительности, надо:
1. правильно писать саму аппу
2. паралеллить правильно написанную.
если не хватает поизводительности, надо:
1. правильно писать саму аппу
2. паралеллить правильно написанную.
ubuntu 20.04, wxWidgets 3.2.1
Re: можно ли повысить приоритет основного процесса
если там самостройный интерпретатор самостройного языка, в язык надо вводить паралеллелизм, те же треды, и тогда их можно выполнять на копии виртуальной машины в другом потоке... ну и писать на этом языке в стиле паралельного исполнения.
ubuntu 20.04, wxWidgets 3.2.1
Re: можно ли повысить приоритет основного процесса
да, все самописное.
Спасибо буду думать как лучше сделать.
Теперь я понял что в одном потоке может работать только одно ядро
всем спасибо
Спасибо буду думать как лучше сделать.
Теперь я понял что в одном потоке может работать только одно ядро
всем спасибо