производительность — код C ++ работает медленно через несколько секунд

У меня есть C ++ код, который решает уравнение в частных производных численно. Все работает нормально, но после первых 10 итераций код начинает работать примерно в 3 раза медленнее.

Некоторая, возможно, актуальная информация:

  • Я использую пакет Eigen для многих расчетов
  • Я храню большое количество данных в массиве (около 100000 значений двойной точности за каждую итерацию)

Я не очень много знаю о том, как работают компьютеры или о кодировании в c ++, и мне было интересно, сможет ли кто-нибудь указать мне правильное направление, чтобы я мог решить эту проблему.

Я также могу опубликовать код, если это будет полезно, но это очень долго.

-1

Решение

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

Это может быть алгоритм. Знаете ли вы, если этот код не должен замедляться после определенного количества итераций? Может быть, природа вашей проблемы такова, что программа должна замедляться.

Это может быть компьютер не хватает памяти. Попробуйте запустить ту же программу на компьютере с большим объемом памяти, это лучше? Затем вы должны выполнить профилирование памяти и идентифицировать любые объекты (например, большие массивы) в памяти, которые лежат вокруг, но не используются. И исправьте код так, чтобы этого не произошло. Посмотрите «утечка памяти» и поймите, как ее исправить.

Возможно, утечки памяти нет, но по мере накапливания итераций процесс занимает больше памяти до такой степени, что ему необходимо постоянно обмениваться страницами памяти назад и вперед с жесткого диска, это обычное поведение и соответствует внезапное падение скорости. Попробуйте переписать программу, чтобы объем памяти не увеличивался. Попробуйте управлять данными так, чтобы неиспользуемые данные были либо удалены, либо записаны в файл.

Или что-то другое…

Надеюсь это поможет.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]