2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

【トリップ検索】MERIKEN's Tripcode Finder@sc

344 :◆YSRKENzzasTCaYr:2014/05/17(土) 21:42:09.88 ID:HlllZZ0dQ
>>342
もちろんそうなんですが、SIMDで4つ同時に処理しているので、
「_mm_movemask_epi8が0だった」=「4つともアウト」なんですよ……

_mm_cmpeq_epi32を二周するのはアレっぽいので、次のように書き換えて比較ベンチしました。
  MakeTrip_SSE2(Key_SSE2, Trip_SSE2);
  for(uint64_t n = 0; n < PatternSize; ++n){
    isMatch = true;
    isMatch_SSE2 = Increment_SSE2[7];
    for(uint k = 0; k < TripArraySize; ++k){
      isMatch_SSE2 = _mm_and_si128(isMatch_SSE2, _mm_cmpeq_epi32(DecodedPattern_SSE2[n][k], _mm_and_si128(Trip_SSE2[k], PatternMask_SSE2[n][k])));
      if(_mm_movemask_epi8(isMatch_SSE2) == 0x0){
        isMatch = false;
        break;
      }
    }
    if(isMatch == true){
      _mm_store_si128((__m128i*)isMatch_, isMatch_SSE2);
      for(uint k = 0; k < SIMD_SSE2; ++k){
        if(isMatch_[k] != 0){
          Result[t] += PutTrip_SSE2(Key_SSE2, Trip_SSE2, k) + "\n";
        }
      }
    }
  }
結果、はっきりとした性能差は出ませんでした。まあ、ヒットすること前提の場合、こちらの方がいいのかもしれません。

総レス数 1002
297 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★