|
こんばんは。
ぽけーっとコードを読んでいて以下のような点が気になりました。
・書き込み/読み取りバイト数(APIの戻り値)はちゃんとチェックした方がいいかも?
→単なるマナーの問題が半分。実は「ちゅーとはんぱに終わりました」でAIOCompletionRoutine()が呼ばれやしないかと心配なのが残り半分
・非同期I/O部分でバッファを共有するのはまずいかも?
→今のPCってDMA使ってるんですか? 例えば同一メモリアドレスへの書き込み(=ディスク読み込み)が重なったような場合にいやーんな競合が発生しないかと心配
・非同期プログラミングが(以下罵詈雑言(嘘))
→「ちょー高速なSSD or めっさ間が悪いと結果が異常に悪くなる」「ごく稀にCPU使用率0%のまま沈黙」などなどが発生しそうな場所がちらほら
・AIOCompletionRoutine()が読み辛いっす(/_;
→タイマと非同期I/Oがあるから仕方ないのかなぁ
…なんだか文句ばかりになってしまいました。ごめんなさい。
私もひさしぶりにベンチマークなんかを走らせてみたのですが
・なぜかWRITEの方が速い
→ドライブのライトバックキャッシュ(WBC)だろうなぁ…
・QD=32 (非同期並列I/O?)が速い(原因不明…)
・んがREADしか性能向上しない
→WRITEはWBCの下駄が高すぎて効果が埋もれただけだろう…
などの予想外の結果に対して理屈こねこねする&新しい発見があるのが楽しかったです。面白いおもちゃをありがとうございます。
---------------------------------------------------------------
CrystalDiskMark 3.0 x64 Beta2 (C) 2007-2009 hiyohiyo
Crystal Dew World : http://crystalmark.info/
---------------------------------------------------------------
Sequential Read : 73.440 MB/s
Sequential Write : 74.898 MB/s
Random Read 512KB : 20.888 MB/s
Random Write 512KB : 22.147 MB/s
Random Read 4KB (QD=1) : 0.244 MB/s [ 59.6 IOPS]
Random Write 4KB (QD=1) : 0.737 MB/s [ 179.9 IOPS]
Random Read 4KB (QD=32) : 0.692 MB/s [ 168.9 IOPS]
Random Write 4KB (QD=32) : 0.783 MB/s [ 191.2 IOPS]
Test : 1000 MB [C: Used 38.7% (176.3/455.0 GB)]
Date : 2009/12/11 23:19:11
OS : Windows Vista Home Premium Edition SP2 [6.0 Build 6002] (x64)
Hitachi Travelstar 5K500.B
|
|