u_int64[8]
在 C/C++中比较两个数组的最快方法是什么?
数组 1 在std::vector
(约 10k 个元素)内,数组 2 在动态分配的结构内。(memcmp()
这里有误报吗?)
我的(伪 C)实现:
typedef struct {
u_int64_t array[8];
}work_t;
/* alloc and fill array work_t* work = new (std::nothrow) work_t etc... */
for(u_int32_t i=0; i < some_std_vector.size(); i++) {
if((some_std_vector[i]->array[0] == work->array[0]) &&
(some_std_vector[i]->array[1] == work->array[1]) &&
(some_std_vector[i]->array[2] == work->array[2]) &&
(some_std_vector[i]->array[3] == work->array[3]) &&
(some_std_vector[i]->array[4] == work->array[4]) &&
(some_std_vector[i]->array[5] == work->array[5]) &&
(some_std_vector[i]->array[6] == work->array[6]) &&
(some_std_vector[i]->array[7] == work->array[7])) {
//...do some stuff...
}
}
目标平台是Linux x86_64 gcc 4.9.2,循环在a里面pthread
,tcmalloc
使用,代码用-O2编译