プロフィール

alphan

Author:alphan
FC2ブログへようこそ!

暗号ツール
最近の記事
カテゴリー
カレンダー

09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

月別アーカイブ
最近のコメント
最近のトラックバック
FC2カウンター

天気予報


-天気予報コム- -FC2-

ブロとも申請フォーム
ブログ内検索

RSSフィード
リンク
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Windows2000/XPで使っていたツールで、USBメモリデバイスに書き込む処理を行うものは多いと思います。
昔作ったツールでVista(32bit)に移行後も使っているものがありますが、USBへのWriteが場合によって異常に遅くなったものがありました。
自作ツールでしたので速度低下部分を調べてみたところ、なんと原因はコードの書き方の悪さにありました。
あるサイズのファイルを書く処理で、4KBのバッファを取ってWrite処理を繰り返すのですが、残った4KB未満のバッファ内容を面倒くさいので1バイトづつ残りのバイト数分だけ繰り返して書いていました。
Windows2000/XPでは、こういった連続した1バイトづつのWriteはおそらくキャッシュされて1回でWriteされたと想像していますが、VistaではIOの方法が変更されたのか1バイトづつ本当にWriteしている様子です。
それも、通常のSATAのディスク等ではそうならずにUSBのメモリデバイスで発生するようです。(2種類のUSBメモリで実験したがどちらもそうでした。)
そのため、先のツールの場合で残りの書き込みバイト数が3900バイト有ったなら、USBメモリデバイスに3900回の1バイトづつのWriteが発生したというわけです。
従来はOSに吸収してもらっていたコードのまずさもVistaで露見する恐れがありますね。
って、こんなハショったコード書く私が一番悪いのですが・・・
スポンサーサイト

コメントの一覧

コメントの投稿














管理者にだけ表示を許可する

トラックバック

トラックバックURL
→http://alphan.blog96.fc2.com/tb.php/17-b4de4b3e
この記事にトラックバックする(FC2ブログユーザー)

前後のページの案内

バンドメンバー募集のキング 新着コールマン通販
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。