Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 27.11.2010
Сообщений: 7
Builder 6

Как ускорить вычисления/дать больше ресурсов скомпилированному приложению в Borland C++ Builder

09.12.2018, 13:15. Показов 1862. Ответов 8

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане,

В своей научной работе еще давно начал использовать Borland C++ Builder 6. Дело в том, что понадобилось выполнить оптимизацию параметров функции. Внутри функции очень много вычислений дифференциальных уравнений высших порядков. В самом алгоритме оптимизатора проблем нет - он простой, а вот функция является очень "тяжелой", но там никуда не деться и в рамках науч. проекта ничего уже не сделаешь...
Потому считает он очень долго, порой до 5-6 часов, но при этом сам процессор и память используются всего на 10-12% (Intel Core i5 M480 @2.67Ghz). Причем заметил, что использование ресурсов моим созданным приложением будто "упирается" в потолок, и как не нагружай еще сильнее алгоритм - как использовал он 10-12% и около 3 Мб ОЗУ, так и продолжает. Пробовал выставлять приоритет в Диспетчере задач на "Высокий" или "Реального времени" или скачивать всякий софт, что-то наподобие CPU Control и др. - не помогает.

Собственно, вопрос:

Можно ли настроить компилятор или само приложение таким образом, чтобы оно использовало ресурсы компьютера на максимум? Или же это ограничение самого Borland'a?

Буду рад услышать комментарии профи, кто работал с Borland'ом.
Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.12.2018, 13:15
Ответы с готовыми решениями:

Как дать своему приложению привилегии Root?
Нужно записать данные в файл, который имеет права доступа RW-R--R--, соответственно нужен рут. Следующий код не пишет в файл, получаю...

Как не дать стороннему приложению закрыть программу
Что нужно сделать чтобы мою программу не закрывало левое приложение! Вообщем когда запускаю другое приложения, то моя программа...

Как выполнить событие в FormClosing и только потом дать закрыться приложению?
Здравствуйте!Как выполнить какое либо действие в событии FormClosing до его стандартного закрытия? Т.е. допустим при клике на крестик мне...

8
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,872
Записей в блоге: 12
09.12.2018, 13:24
Цитата Сообщение от MaximSpartak Посмотреть сообщение
при этом сам процессор и память используются всего на 10-12%
Очень странно. Если бы был другой процессор, у которого 8 ядер, то 12% было бы вполне объяснимо: вычисления на одном ядре - это и есть 100% / 8 = 12.5%, для вычислений без многопоточности, максимально использующих одно ядро - так и будет 12% общего ресурса процессора. Но у Intel Core i5 M480, насколько я помню, 4 логических ядра, должно упираться в 25%, а не в 12... Где-то значит в приложении что-то препятствует большей производительности, без кода сложно сказать.

У меня на 4-х ядернике одно ядро математическими расчетами грузилось на 100%, так что всего было не менее 25% загрузки процессора, так что сам Билдер никаких ограничений не добавляет на этот счет.
1
1 / 1 / 0
Регистрация: 27.11.2010
Сообщений: 7
09.12.2018, 14:02  [ТС]
volvo, Да, прошу прощения, в "процессах" указано как 10-12%. Но на вкладке "подробно" как раз 25% (см. вложение), о которых Вы говорите, наверное? На другие ядра, перебросить не удастся? Скорее всего нет, я так понимаю... При этом не видно, чтобы какое-либо из логических ядер грузилось на 100%, максимум 15%.

Код очень длинный, я не думаю, что Вам захочется там копаться. Каких-либо специфичных инструментов или конструкций от Builder'а там не использовал я. Стандартные "C"шные функции...
Миниатюры
Как ускорить вычисления/дать больше ресурсов скомпилированному приложению в Borland C++ Builder   Как ускорить вычисления/дать больше ресурсов скомпилированному приложению в Borland C++ Builder  
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33192 / 21488 / 8233
Регистрация: 22.10.2011
Сообщений: 36,872
Записей в блоге: 12
09.12.2018, 17:20
Цитата Сообщение от MaximSpartak Посмотреть сообщение
На другие ядра, перебросить не удастся?
Обычно в математических вычислениях мало что можно распараллелить и запустить вычисления отдельным потоком. Если удастся - то чем больше потоков получится создать (в идеале - не больше, чем число логических ядер) - тем больше будет занят процессор.
0
2621 / 1632 / 266
Регистрация: 19.02.2010
Сообщений: 4,330
09.12.2018, 20:04
Цитата Сообщение от MaximSpartak Посмотреть сообщение
Каких-либо специфичных инструментов или конструкций от Builder'а там не использовал я. Стандартные "C"шные функции...
Ну, попробуйте в модулях программы вместо
#include <math.h>
подключить
#include <fastmath.h>
Если будет видимое ускорение (не в процентах загрузки процессора - а в скорости расчётов некоторого тестового задания) - значит, в проге большая нагрузка идёт на элементарные матем.функции (exp() и прочие). Если не будет - значит, там основное время занимают обычные циклы, плюсы-минусы-умножения-деления, доступ к данным в памяти.

Цитата Сообщение от MaximSpartak Посмотреть сообщение
Можно ли настроить компилятор или само приложение таким образом, чтобы оно использовало ресурсы компьютера на максимум?
Можно, если алгоритм/задача допускают распараллеливание расчётов.

В любом случае - только после взгляда на код (а лучше - после Вашего подробного объяснения задачи) можно будет сказать, насколько эффективно расчёты могут быть распараллелены на несколько ядер.
Но взгляд на код невооружённым глазом - он тоже во многом будет чисто субъективным. По-хорошему - нужно загнать код в профилировщик (а для этого нужен код всей проги, а не только функции с диффурами). Профилировщик чётко может сказать, сколько времени занимает выполнение не только каждой функции программы, но и каждой строки программы.
Ну и ещё вариант - сразу будет видно, что это не код, а говнокод, и надо всё (ну, или не всё - а часть с вычислениями) переписывать совсем по-другому.
0
09.12.2018, 21:35

Не по теме:

Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
а лучше - после Вашего подробного объяснения задачи
VTsaregorodtsev, как я понял, человек делает не лабораторную и не курсовую работу в какой-нибудь "шараге"...
Поэтому "объяснение задачи" - это будет просто вынос мозга и не более того...
И о каком "распараллеливании" может речь идти тогда, когда, грубо говоря, значение функции вычисляется при значении N1, которое получается из функции с аргументом N2. который получается ... т.е. все вычисления происходят последовательно, что в той же математике - сплошь и рядом...

0
1 / 1 / 0
Регистрация: 27.11.2010
Сообщений: 7
09.12.2018, 22:38  [ТС]
D1973, да, Вы правы объяснять задачу, будет просто невозможно, эта задача из моей кандидатской диссертации и объяснять диссер вам всем будет то еще приключение . А вообще я решил проблему путем увеличения шага интегрирования. Да, я потерял в точности расчета, но зато не придется оставлять компьютер включенный сутками и в принципе для целей оптимизации - сойдет. Так что тему можно закрыть. Спасибо Всем.
0
2621 / 1632 / 266
Регистрация: 19.02.2010
Сообщений: 4,330
10.12.2018, 00:24
Цитата Сообщение от D1973 Посмотреть сообщение
о каком "распараллеливании" может речь идти тогда, когда, грубо говоря, значение функции вычисляется при значении N1, которое получается из функции с аргументом N2. который получается ... т.е. все вычисления происходят последовательно, что в той же математике - сплошь и рядом...
Я не верю, что интегрирование одного диффура (или даже системы) требует 5-6 часов (если там в проге не откровенный говнокод).
Скорее всего у ТСа сеточный метод решения. Т.е. решается задача гидро/газодинамики, либо какой-то прочностной расчёт, либо что-то подобное (вплоть до моделирования неравномерной среды, например, в задаче расчёта оптимального шумопоглощающего пакета из нескольких разных листовых материалов).
И, как нас учат математики-вычислители, сеточные методы таки параллелятся. Хоть на ядра многоядерного процессора - хоть на узлы кластера/суперкомпьютера. Ибо узлы сетки могут таки обсчитываться в параллель.
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,140
Записей в блоге: 3
10.12.2018, 11:28
Добавлю свои 5 коп.
Вроде как сама компания писала, что до до какой то версии компилятор не умеет нормально работать с ресурсами процессора (использования ядер, и неверное распределение нагрузки)....И только с выходом новых версий, было отписано, что появилась нормальная возможность нагрузки на ядра.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.12.2018, 11:28
Помогаю со студенческими работами здесь

Android Studio. Как дать приложению возможность использовать фронтальную вспышку?
На устройстве имеется 2 вспышки - основная и фронтальная (на передней части телефона) Уже написал приложение &quot;фонарик&quot;, которое...

Добавляю из ресурсов картинки. Их много. Как ускорить процесс?
int y = 0; Image iArr = new Image; for (int i = 1; i &lt;= iArr.Length; i++, y++) { ...

Дать разрешения приложению
Всем доброго времени суток. Есть такая проблема, есть приложение на андроид, исходный проект есть (я не разработчик, с разработчиком ломаем...

Подскажите где можно найти Borland C++ Builder или Borland Developer Studio 2006 C++ ? Очень надо.
Подскажите где можно найти Borland C++ Builder или Borland Developer Studio 2006 C++ ? Очень надо.

Не дать консольному приложению закрыться
Здравствуйте. Как ввести консольное окно в ожидание, т.е не дать ему закрыться. Это будет стим бот, который будет отправлять...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru