|
▼やまさん:
>CrystalDiskMarkで、テストサイズ500MBでの512KB Random Writeが
>やたら遅いのが気になって調べてます。が、これと関係ない話です。
今更ですが、原因がわかりました。
大きいファイルを設定した場合、SetFilePointer() + WriteFile() に数秒時間がかかることがあることが判明しました。やまさんがおっしゃる 500MB で Random Write が遅い原因は、測定時間の 6 秒のうちほとんどが何らかの処理待ちで占有されているのが理由のようです。
CrystalMark 2004R2 のソースコードと比較しながら原因を追究したところ、
CreateFile に渡すオプションが OPEN_EXISTING ではなく、CREATE_ALWAYS になっていることに気がつきました。恐る恐るオプションを変更すると…
治りました。恐ろしいぐらいに。
先日レポートいただいた時点でこちらの原因も追究していれば良かったのですが…。
50MB/100MBの場合は、それほど影響がないようです。
なぜ、必要もないのに CREATE_ALWAYS を設定したのか今となっては理由はわかりません。ただ、ベンチマークに使用するファイルを CREATE_ALWAYS で開いてはいけないということは良くわかりました。いわゆる後の祭り
先月 2.0 をリリースしたばかりなので、今回は 2.1 として準備が出来次第リリースする予定です。本当は 3.0 の方が良いんでしょうけど。というか、こんなのバージョンアップじゃないし orz
責任の重さをヒシヒシと感じてしまいます。ベンチマークなのに結果が信頼に値しないなんて…
|
|