2015-05-09 3 views
3

У меня есть программирование программирования C, которое включает в себя оптимизацию кода как можно больше. Я уже немного читал об этом в Интернете и нашел такие вещи, как использование case за if, прохождение указателями вместо значений и т. Д.C Оптимизация программирования и расширения процессора

Что я хотел бы спросить, почему я знаю, какой процессор расширения доступны, может помочь мне оптимизировать мой код? Я знаю, что SSE и AVX доступны на машине, но что это значит для меня как программиста?

В отношении моего вышеуказанного вопроса я нашел Intel Intrinsic Guide, который, как я думаю, связан с расширениями процессора. Существуют ли какие-либо преимущества с точки зрения производительности при использовании этих функций над другими функциями C. например будет использовать _mm_sqrt_ps от xmmintrin.h быстрее, чем sqrt от math.h?

ответ

2

Идея состоит в том, чтобы иметь библиотеки с оптимизированным процессором (SSE, AVX и т. Д.) И вызвать что-то вроде _may_i_use_cpu_feature() для динамического определения того, какая функция доступна во время выполнения, и загрузить «лучшую» реализацию для ЦП.

Для портативного кода вы хотите использовать sqrt() - и некоторые библиотеки времени исполнения имеют оптимизированную реализацию, которые достаточно хороши. Если вы хотите полностью контролировать и максимизировать производительность на определенной платформе и не заботитесь о переносимости, вы можете написать ручную оптимизированную сборку (или использовать встроенные функции).

Большая производительность достигается лучшими алгоритмами в любом случае ...

Смежные вопросы