まず、明確にするために、C++には膨大な数のMD5実装が存在することを知っています。ここでの問題は、どの実装が他の実装より高速かどうかを比較することができないかと思います。私はこのMD5ハッシュ関数を10GBを超えるサイズのファイルに使用しているので、スピードは本当に大きな問題です。C++でのMD5の高速実装
答えて
になりますように
http://www.golubev.com/gpuest.htm
に見える私は、ポイントavakarが作るしようとしていると考えている:現代の処理能力とのIOスピードあなたのハードドライブは、ハッシュの計算ではなくボトルネックです。より効率的なアルゴリズムを取得しても、最も遅いポイントではないようには助けになりません。
何か特別なことをしている場合(たとえば、1000秒のラウンド)、ファイルのハッシュを計算しているだけで、異なる場合があります。あなたはあなたの計算ではなくIOをスピードアップする必要があります。
確かに、そこにはアルゴリズムのCUDA/OpenCLの適応がたくさんあるので、あなたは明確なスピードアップを得られるはずです。あなたはまた、基本的なアルゴリズムを取ることができ、ビットを考える - > CUDA/OpenCLの実装を行ってください。
ブロック暗号は、このタイプの実装のための完璧な候補です。
また、Cのインプリメンテーションを取得し、インテル®Cコンパイラーのコピーを取得し、それがどれほど優れているかを確認することもできます。インテルCPUのベクトル化拡張は、速度向上のために驚異的です。
ここで使用可能なテーブル:おそらくあなたのボトルネックは、あなたのハードドライブIO
同じハードウェア上では問題はありませんが、実際にはGPGPUとは異なります(おそらく、この種の問題ではハードウェアが高速かもしれません)。 md5の主要部分は、複雑な算術演算の非常に複雑なループです。コンパイラの最適化の品質は重要です。
また、ファイルの読み方も重要です。 Linuxの場合、mmapとmadviseとreadaheadが該当します。ディスク速度はおそらくボトルネックです(可能であればSSDを使用してください)。
あなたは本当にmd5を使いたいですか?よりシンプルで高速なハッシュコーディングアルゴリズム(md4など)があります。それでもあなたの問題は、CPUバインドよりも多くのI/Oバウンドです。
- 1. C#ネットワーク上の高速MD5/SHAハッシュ
- 2. 高速イテレータ実装
- 3. LuaでのBWTの高速実装
- 4. AKAMAI CCU高速パージ実装
- 5. Math.abs(a-b) - Math.abs(c-d)の実装は高速ですか?
- 6. MD5 javascriptの実装
- 7. CRAM-MD5の実装
- 8. ArcSinの高速実装または近似C#
- 9. POS用のC言語でのMd5実装
- 10. 「hash( 'md5'、 'string')」が「md5( 'string')」よりも高速なのはなぜですか?
- 11. Apache固有のmd5 javascript実装で.htpsswrd
- 12. Perl C++より高速で動作する正規表現ブーストの実装
- 13. C++での高速バッファリング
- 14. 私のサイト(C#ASP.net)の高速で関連性の高い検索を実装する
- 15. C++の高速メディアフィルタ
- 16. JavaまたはC#で高速MD5アルゴリズムを作成するには
- 17. Android MD5の実装がクラッシュする
- 18. クラスの高速列挙の採用/実装の例?
- 19. C#高速ピクセルレンダリング
- 20. MySQLでインデックスを高速化する - CRCまたはMD5?
- 21. mysql文字列比較 - md5高速ですか?
- 22. 超高速ASP.NET AJAXコールバック/ PageMethodsの実装方法
- 23. 方向性隣接リストの高速実装
- 24. テンソルフローにおける高速softmax回帰の実装
- 25. Python用の高速インフォセット実装はありますか?
- 26. ffmpegで高速エンコードを実装するには?
- 27. C/C++でデ・インターリーブ配列を高速に実行する
- 28. C++の高速化アルゴリズム
- 29. Cで高速プロデューサ/スローコンシューマ
- 30. Cこのブランチレスハックは実際には高速ですか?
あなたはこれらの超近代的で高速なSSDドライブを持っていますか? – avakar
この[質問](http://stackoverflow.com/questions/2717216/what-hash-algorithms-are-parallelizable-optimizing-the-hashing-of-large-files-u)が役立つかもしれません。並列化できるものを提案しようとしていましたが、データがどのように格納されているかによって異なります。 – Vlad
@ avakar:データが複製されている場合は、システムが許可していれば、異なるレプリカから並列に実行することで、計算を高速化することは少なくとも可能性があります。 – Vlad