Приветствую.
Построено у меня взаимодействие с тысячами железок через mqtt сервер, из всего многообразия «сообщений» приходящих через либу в типе char * msg
есть пересылка снимков в jpeg, которые тоже приходят одномоментно тысячами штук на свой сервис, весь «парсинг заголовка сообщения» на этом сервисе выполнял обычным strncmp и для жпега это выглядит как
if (!strncmp(msg, "\xFF\xD8\xFF", 3)) { ... }
else if ...
как я понимаю memcmp
быстрее strncmp
, тем более мне нужно сравнить байты а не строки и понятно что так тоже как минимум компилируется
if (!memcmp(msg, "\xFF\xD8\xFF", 3)) { ... }
а можно БЕЗ объявления переменной выполнять сравнение набора байт любой длины?
мне такой в голову пришел перл, но что то сомнительна его производительность )
if (memcmp(msg, std::array<uint8_t,3>({0xFF, 0xD8, 0xFF}).data(), 3) == 0)