Новости и события » Hi-Tech » Влияние несущественных изменений кода на производительность при использовании GCC

Влияние несущественных изменений кода на производительность при использовании GCC

Nadav Amit, разработчик ядра Linux из компании VMware, поделился результатом исследования особенностей оптимизации в GCC небольших функций ядра. Исследование было проведено после того, как разработчик столкнулся с непонятным феноменом - внесение несущественных изменений в код ядра, приводили к небольшому, но заметному снижению производительности в тестах. Примечательно, что подобные вносимые изменения были оптимизациями и теоретически должны были увеличить производительность, но на деле производительность падала.

Дело оказалось в том, что GCC принимает решение об использовании inline-развертывания функций в зависимости от результатов оценки размера результирующего кода (даже если функция определена с ключевым словом "inline"). Компилятор не учитывает фактический размер результирующег кода, а пытается прогнозировать его на основе числа переводов строк ("&92;n") и разделителей (";") в исходном тексте.

Подобная особенность может приводить к таким казусам как снижение производительности при добавлении не влияющих на результирующий код макросов или в новых версиях GCC даже при замене символов табуляции на пробелы.

Разница в производительности особенно бросается в глаза для функций с ассемблерными вставками, для которых добавляется излишняя обертка вместо прямой подстановки нескольких указанных в функции инструкций. В ядре Linux проблему представляют компактные функции с макросами WARN, для которых оказалось, что не выполняется ожидаемая inline-оптимизация.

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


Как выбрать подвеску из золота или серебра

Как выбрать подвеску из золота или серебра

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

26 мая 2023

Свежие новости Украины на сегодня и последние события в мире экономики и политики, культуры и спорта, технологий, здоровья, происшествий, авто и мото

Вверх