мне нужно вычислить CRC для формирования хеш-функции на машине INTEL и придумал следующие две встроенные функции:Выбор между 32 и 64 бит внутренней CRC на процессоре Intel
_mm_crc32_u32
_mm_crc32_u64
В моем проекте, я имею дело с 32-битными переменными и моя дилемма между сдвигая и ORing каждые две переменные (создавая тем самым переменную в 64-разрядную), а затем с помощью 64-битного CRC или запустить 32-битный CRC на каждом из двух 32-би t переменных.
Я не могу найти в любом месте количество циклов, которое выполняет каждая из этих функций, и из спецификаций функций Intel неясно, какой из них предпочтительнее.
Та же дилемма относится также на 16-битной версии функции CRC:
_mm_crc32_u16
Я попытался проверить это, беря время до и после CRC. Результаты были почти такими же. Поэтому мне нужен более сложный способ расчета.
Если вы хотите бенчмарка альтернативы, вот начало: http://stackoverflow.com/questions/15752770/mm-crc32-u64-poorly-defined/15754706#15754706 _mm_crc32_u64 не доступен для использования в 32-битных сборках. – ScottD