Retourner au contenu associé (journal : Recherche de valeur dans un tableau et l'écosystème des compilateurs C++)
Posté par YBoy360 (site web personnel) le 08 octobre 2021 à 15:26. En réponse au journal Recherche de valeur dans un tableau et l'écosystème des compilateurs C++. Évalué à 2.
Pour info, la version utilisant des long est presque encore 2 fois plus rapide sur ARM que la version int ...
Par contre ça impose des contraintes d'alignement.
size_t find_int_c4l(const int k, const int* v, const size_t n) { size_t i = 0; size_t n2 = n >> 1; const long* vl = (const long*)v; const long kl = (long)(((long)k>>32) + k); unsigned int index = 0; for (; i <= n2; i += 8, vl += 8) { index = 0; __builtin_prefetch(vl + 256, 0, 1); index = vl[0] != kl ? index : 1; index = vl[1] != kl ? index : 1; index = vl[2] != kl ? index : 1; index = vl[3] != kl ? index : 1; index = vl[4] != kl ? index : 1; index = vl[5] != kl ? index : 1; index = vl[6] != kl ? index : 1; index = vl[7] != kl ? index : 1; if (index == 1) { break; } } if (index == 0) return i; else for (int j = 0; i < 8; j++) { if (vl[j] == kl) return i + j; //Attention, il == 2 * i... } }
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
[^] # Re: Sans SSE
Posté par YBoy360 (site web personnel) . En réponse au journal Recherche de valeur dans un tableau et l'écosystème des compilateurs C++. Évalué à 2.
Pour info, la version utilisant des long est presque encore 2 fois plus rapide sur ARM que la version int ...
Par contre ça impose des contraintes d'alignement.