Методы оптимизации
Существует три типа методов оптимизации кода в C:
вычислительные методы
Методы, связанные с памятью
Методы привязки ввода / вывода
Методы, связанные с вычислениями, включают вычисление времени, затрачиваемого на выполнение операторов и функций. Вычислительные методы включают в себя:
Профилирование
Встраивание
Разматывание петли
Замятие петли
Вычисление инвариантов цикла
Инверсия петли
Устранение хвостовой рекурсии
Таблица смотри вверх
При вычислениях, связанных с памятью, вам необходимо учитывать память, которую использует программа. Использование памяти из нижних частей иерархии памяти увеличивает время выполнения. Вам нужно использовать память с соответствующего уровня при запуске программ. Методы, связанные с памятью, включают:
Местонахождение ссылки
Роу-мажорное обращение
Уменьшение заполнения
Утечки памяти
При оптимизации границ ввода / вывода (I / O) методы последовательного доступа и произвольного доступа используются для сокращения времени, необходимого для получения информации.
Буферизованный ввод / вывод быстрее, чем небуферизованный ввод / вывод. Вы можете использовать функции read () и write () с большими буферами. Вы можете использовать mmap (), чтобы сократить время, необходимое для получения информации. Mmap () сопоставляет адресное пространство процесса с общей памятью или файлом.
еще несколько методов оптимизации:
Минимизируйте использование глобальных переменных в программе.
Объявить все функции, кроме глобальных переменных, как статические в файле.
Используйте переменные размера слова, такие как int и float вместо char, short и double.
Избегайте использования рекурсии.
Избегайте использования функции sqrt (), так как она сильно загружает процессор.
Использовать одномерные массивы.
Не разбивать тесно связанные функции на отдельные файлы.
Используйте функцию put () вместо функции printf.
Использовать неформатированный / двоичный доступ к файлам вместо доступа к форматированным файлам.
Используйте mallopt (), если компилятор поддерживает эту функцию для управления функцией malloc.
Используйте макросы вместо небольших функций для экономии времени процессора.