2012-05-30 3 views
1
template <typename T> 
int custom_memcmp(const T* a, const T* b, std::size_t n); 

Будет ли это быстрее, чем memcmp от C?Пользовательский шаблон memcmp vs C memcmp

Если sizeof (T)! = 1: он будет выполнять меньше итераций и может сравнивать значения как их фактические типы. Например, я бы предпочел бы сравнить два «длинного длинного», чтобы быть быстрее, чем сравнивать два 8-байтовых буфера.

+4

Почему бы вам не рассказать об этом и не узнать? –

+1

'memcmp' может быть реализован как _intrinsic_, и вы не можете его победить. –

+2

Как мы могли узнать, не видя определения? Подпись не очень значима – ildjarn

ответ

6

memcmp обычно является встроенным компилятором, поэтому он будет оптимизирован для того, чтобы быть настолько эффективным, насколько это возможно (будет векторизованным, встроенным и т. Д.).

Так что вы почти наверняка не побьете его. Но, конечно, если вы хотите знать наверняка, то просто профиль!

1

Нет, это не будет быстрее. memcmp просто сравнивает необработанную память соответствующих размеров как можно эффективнее. Только наивная реализация memcmp будет делать это байтом по байту.

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