FastCopyではベリファイ用のアルゴリズムの一つとして、xxHashを(XXH_PRIVATE_API付で)staticリンクしています。
この時、xxHashを、VS2017(C++)で、「速度優先最適化」でビルドするだけでは、i5-8600K(3.6GHz)で 3.7GB/s程度の速度しか出ません。
またxxhash.hに記載してある XXH_INLINE_ALLを定義しても、何故か効果がありません。
いくつか試行錯誤したところ、xxHash自体のプロジェクトで、C/C++ → 最適化 → インライン関数の展開で「拡張可能否関数全て(/Ob2)」を適用すると、一気に 13.3GB/s と約3.6倍に高速化しました。次のFastCopyリリースで反映する予定です。
似た事象でお困りの方はお試しください。
なお、FastCopyではハッシュ計算をI/O処理と並行して行うことで、I/O時間の中にハッシュ時間を隠ぺいしています。今回、非常に高速なI/O環境でI/O時間よりもハッシュ時間の方がネックとなる現象が発生して調査したという流れでした。個人的にはやや想定外の出来事でした。
追記)こちらにマルチスレッド化実験を合わせて記事にしておきました。
Categories
Android |
CeSleep |
comp_misc |
comp_tips |
fastcopy |
ipmsg |
mailman |
misc |
npop |
ScheEdit |
sigsleep |
tdiary |
thinkpad
_ Austin Vaughan [Hello SHIROUZU. My name is Austin, I live across the pond...]
_ shirouzu [Thank you!]