Цитата:
Сообщение от Dogmat-iGwt
Процесс зависит от 20-ти переменных, диапазоны значений которых либо известны изначально, либо зависят друг от друга. Таким образом получается 20 вложенных циклов for.
|
Я бы не усложнял так код, а сделал бы массив таких диапазонов

По идее и скорость может повысить.
Цитата:
Сообщение от Dogmat-iGwt
При стандартном наборе переменных программа вычисляет больше миллиарда вариаций, что занимает у нее больше 12 минут. Процесс идет в 2 потока и грузит 33% ЦП, при этом программа виснет и не отвечает в диспетчере задач.
|
Всё просто, нужно принудительно обрабатывать сообщения для окна программы от windows. Но это будет тормозить вычисления.
И оно точно в 2 потока работает? Т.е. если оно действительно многопоточное, то почему, например, не 10?
Цитата:
Сообщение от Dogmat-iGwt
Я попытался снизить количество вычислений следующим образом: вычленил некоторые закономерности процесса и, в случае наступления такой закономерности, пропускал последнее обращение к подпрограмме переходя к следующему значению по циклу. Однако время расчета не снизилось даже на секунду, то есть, как я понял, блок, содержащий только условия, ЦП практически не грузит.
|
Можешь попробовать кэширование или динамическое программирование.
Цитата:
Сообщение от Dogmat-iGwt
Есть ли способ как-то еще снять нагрузку, чтобы снизить время хотя бы до 3,5 минут? Некоторые циклы при определенных условиях содержат всего одно значение, если от них как-нибудь избавиться, то это снизит нагрузку?
|
Так тут чисто твоя логика должна работать, алгоритм работы ты не показал\не описал а спрашиваешь как оптимизировать

Посмотри на пакеры exe, теоретически могут и ускорить работу. + Могут помочь опции компиляции.