|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.05.2017, 11:33 | #1 |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
Снижение производительности программы
Здравствуйте, товарищи программисты!
Внезапная проблема настигла меня - резкое (в 2 раза) снижение производительности написанной программы. Программа представляет собой математическую модель процесса с большим числом частиц. стараясь написать её наиболее эффективно, скомпилировав в режиме Release под 64-х разрядную платформу я надеялся получить результат примерно за 92 часа. В программе я предусмотрел возможность останавливать расчёт и возобновлять его. Всё работало до тех пор, пока я не поставил программу на очередную паузу и перевёл компьютер в спящий режим (его нужно было перевезти в другой город). Запустив программу после "сна" я заметил, что она стала потреблять вдвое меньше вычислительных ресурсов (загрузку ЦП в диспетчере задач смотрел). После нескольких часов работы я проверил промежуточные результаты и убедился в том, что скорость вычислений уменьшилась в 2 раза. Я не был рад этому обстоятельству, ведь расчёт выполнен лишь примерно на 28% я ожидал, что осталось 67 часов до конца, а теперь, получается, мне нужно ещё 6 суток, при условии, что скорость не снизится ещё больше. Не знаете ли, с чем может быть связано снижение производительности, и можно ли вернуть её к прежним показателям? |
02.05.2017, 11:55 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
С необработкой гибернации. Вас ОС просто засвопила и т.д., а ваша прога не вернула все в память. Хотя надо смотреть код...
|
02.05.2017, 12:14 | #3 |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
|
02.05.2017, 12:20 | #4 |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
Код:
Последний раз редактировалось Haric_110; 03.05.2017 в 10:05. Причина: Убрал код |
02.05.2017, 12:21 | #5 |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
окончание
Код:
Последний раз редактировалось Haric_110; 03.05.2017 в 10:06. Причина: Убрал код |
02.05.2017, 14:37 | #6 |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
В общем, как я понял, если p51x прав, то навряд ли что-то можно сделать. Пришлось остановить программу. Данные сохранены в файл, из которого буду восстанавливать.
Спасибо за ответ, p51x! |
02.05.2017, 14:51 | #7 |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
Кстати, раз уж я код написал, там видно, что хорошо бы передать переменные цикла регистрам процессора... однозначно нужно передать n, и то, что изменяется чаще всего... (это то, что в третьем условном блоке)
Всего четыре регистровой переменной задать можно, не так ли? Вообще, это не стоит спрашивать здесь... да и компилятор, вроде, сам определяет, что нужно хранить в регистрах... Последний раз редактировалось Haric_110; 02.05.2017 в 15:09. |
05.05.2017, 16:09 | #8 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
И вообще, "верьте своему компилятору", и погоняйте "static analyzer" вроде PVSStudio - https://www.viva64.com/ru/pvs-studio/ Кстати, слова вроде const volatile mutable дают сильную подсказку оптимизатору. У меня был случай ускорения в двое, просто верной расстановкой const. Последний раз редактировалось alexzk; 05.05.2017 в 16:16. |
|
05.05.2017, 17:39 | #9 | |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
Цитата:
Запускал в режиме оптимизации. Компилятор, вроде как, правильно выбрал переменные для оптимизации, неиспользуемые константы и переменные удалил. Хотя, не совсем так, как хотел бы я. Переменную, которой присваивается значение на каждой итерации цикла (n), следовало бы поместить в регистр вместо n_at, которая вообще не используется в цикле. Я увидел это при просмотре локальных переменных во время отладки. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
На сколько разница в производительности? | Illusiony | SQL, базы данных | 4 | 15.03.2014 16:09 |
Падение производительности | O m n i s | Софт | 4 | 30.09.2013 14:58 |
Информация о производительности | Blade | Общие вопросы C/C++ | 2 | 24.11.2009 23:04 |
(предупреждение о производительности) | mrandrey | Общие вопросы C/C++ | 10 | 25.08.2009 20:49 |
Снижение аппетита программы | Дима я | Общие вопросы Delphi | 14 | 12.08.2009 09:46 |