В комментариях к предыдущей записи Влад Шабанов предложил, казалось бы, отличное решение для лексикографической сортировки 8-байтных ключей (функция сравнения для qsort()):
#include "sys/endian.h";
int cmp(const void *d1,const void *d2)
{
uint64_t a1 = be64toh(* ((uint64_t *)d1));
uint64_t a2 = be64toh(* ((uint64_t *)d2));
return (a1 > a2) - (a1 < a2);
}
Однако результат бенчмарка оказался неожиданным: мое наивное и тупое в лоб решение оказалось более чем в полтора раза быстрее, чем предложенная компактная красота.