Вот мой второй совет по оптимизации. Как и в случае с моим первым советом, это общее назначение, а не язык или процессор.
Внимательно прочитайте руководство по компилятору и поймите, что оно говорит вам. Используйте компилятор в полную силу.
Я согласен с одним или двумя другими респондентами, которые определили, что выбор правильного алгоритма имеет решающее значение для снижения производительности программы. Кроме того, норма прибыли (измеренная в улучшении выполнения кода) за время, потраченное на использование компилятора, намного выше, чем норма прибыли при настройке кода.
Да, авторы компиляторов не из расы гигантов кодирования, а компиляторы содержат ошибки, и то, что должно, согласно руководству и согласно теории компилятора, ускорять, иногда замедлять. Вот почему вы должны делать один шаг за раз и измерять производительность до и после настройки.
И да, в конечном итоге вы можете столкнуться с комбинаторным взрывом флагов компилятора, поэтому вам нужно иметь один или два сценария для запуска make с различными флагами компилятора, ставить в очередь задания в большом кластере и собирать статистику времени выполнения. Если вы работаете только с Visual Studio на ПК, вы заинтересуетесь задолго до того, как попробуете достаточно комбинаций достаточного количества флагов компилятора.
Привет
Mark
Когда я впервые беру часть кода, я обычно могу получить производительность в 1,4-2,0 раза больше (т.е. новая версия кода работает в 1 / 1,4 или 1/2 от времени старой версии). ) в течение дня или двух, возясь с флагами компилятора. Конечно, это может быть комментарий о нехватке компилятора среди ученых, создавших большую часть кода, над которым я работаю, а не симптом моего превосходства. Установив флаги компилятора на максимум (а это редко просто -O3), может потребоваться месяцы кропотливой работы, чтобы получить другой коэффициент 1,05 или 1,1