u_int64[8]
C/C++ で2 つの配列を比較する最速の方法は何ですか?
配列 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 で、ループは 内にありpthread
、tcmalloc
が使用され、コードは -O2 でコンパイルされます。