将数组与传入的字节*缓冲区进行比较的最快方法
fastest way to compare array with incoming byte* buffer
有没有最快的方法可以将 24 个元素字节数组与传入的byte*
缓冲区进行比较?
byte compare_array[24]=
{0x00,0x00,0x00,0x01,0x26,0x05,
0xF8,0x00,0x11,0x22,0x33,0x44,
0x55,0x66,0x77,0x88,0x99,0xAA,
0xBB,0xCC,0xDD,0xEE,0xFF,0xFF};
下面的代码感觉不行。
if( (buffer[0] == 0x00) && (buffer[1] == 0x00) && ...)
{
//...
}
如果数组对齐,这可能会更快:
bool compare(uint8_t* buffer) {
uint64_t *c64 = (uint64_t*)compare_array;
uint64_t *b64 = (uint64_t*)buffer;
return c64[0] == b64[0] && c64[1] == b64[1] && c64[2] == b64[2];
}
我同意你的观察,即代码感觉不正确。你需要的是一个循环。 一个 for 循环或 do while 循环。 在这两种情况下,一旦发现不同的字节,您就可以尽早爆发。Kltis 提到的检查数组长度的早期修剪是早期保存运行时的最简单方法。
如果你真的需要更深入,看看 memcmp(( 函数。
祝你好运!
相关文章:
- 通过比较C++中的行在 txt 文件中搜索的最简单方法是什么?
- 比较两个节点坐标的最佳方法是什么?
- 比较C++中两个整数的最有效和最干净的方法是什么?
- 比较C++变量的最有效方法
- "operator()"在重载运算符方法中是什么意思,在priority_queue(STL)中用作C++中的比较器?
- 比较"A"、"C"、"G"'T'字符的最快方法
- 任何方法都可以在C++中比较数据结构中的许多方法
- 是否有任何统一的方法可以在 c++ 中创建自定义比较器?
- 在 c++ 中比较不相等数组或字符串的方法
- 使用 lambda 比较初始化优先级队列的方法
- C# 通用比较方法 [C++模板的类似物]
- 比较字符* (C/C++) 的最快方法?
- 获取字符串大小的各种方法之间的比较
- C 是否具有对两个STD :: sets,vectors等进行三角比较的标准方法
- 比较两个文件中的两个中间人的最佳方法.C++
- 两种数字比较方法中哪一种更有效
- C++标准::地图比较方法
- 为什么比较方法不起作用?
- 对于C++字符串最好使用比较方法或关系运算符
- 类中的比较方法