Оптимизация числодробилки

Apr 06, 2016 10:12

Рабочая программа для моделирования эволюции тройной звездной системы с учетом общей теории относительности непрерывно улучшалась и модифицировалась в течение последних десяти лет. В результате ее код превратился в такую кашу, что дальнейшая его поддержка стала невозможной ( Read more... )

Физика, Программирование, Математика

Leave a comment

Comments 14

vitus_wagner April 6 2016, 07:14:10 UTC
Вообще такие вещи бы оптимизирующий компилятор должен делать.

Reply

al_pas April 6 2016, 07:22:10 UTC
Разумеется, но в задачах небесной механики, когда результат расчета на 10000000 шаге виляет хвостом на малейший чих в исходных данных, и весь код заточен не столько на быстродействие, сколько на минимизацию потерь точности, лучше не доверять автоматической оптимизации, поэтому она обычно отключена.

Reply

v1adis1av April 6 2016, 07:30:21 UTC
А это проверялось? В смысле, если сравнить два расчёта с одинаковыми начальными условиями, один на программе, компилированной с оптимизацией, второй без, -- действительно появляется разница?

Reply

al_pas April 6 2016, 07:50:19 UTC
Да, и очень существенная. У меня в программе используется коррекция, обеспечивающая сохранение полного момента и энергии с учетом потерь на излучение гравитационных волн. Шаг интегрирования тоже постоянно меняется, а про корректность алгоритма оптимизации gcc уже писал Линус Торвальдс.

Reply


dims12 April 6 2016, 11:35:23 UTC
Странно. Этим должен заниматься компилятор, а не программист.

Reply


back_in_usa April 6 2016, 14:56:11 UTC
Так ведь ещё на первом курсе учат, что деление должно быть последним действием.

Reply


Leave a comment

Up