ほんの数秒でローカル共有に保存される約 7 MB のファイルがあります。ただし、そのファイルをネットワーク上の場所に保存するには数分かかります。これを高速化するにはどうすればよいか考えています。ここに私の現在のオプションがあります:
- データをローカル マシンの一時ファイルに保存し、その一時ファイルをネットワーク パスにコピーします。これが最も簡単で、費用対効果が最も高いため、おそらくこれを行います。
- とを使用
SetFilePointerEx()
しSetEndOfFile()
ます。この質問への回答に基づいて、これが役立つかもしれないと思いました: Windowsで大きなファイルを作成する - バッファ書き込み。書き込みデータを自分でキャッシュし、バッファがいっぱいになったらフラッシュすることもできますが、これは OS によって既に行われているキャッシュと重複しませんか?
#1が最良の選択肢のように思えますが、ネットワークパスへの保存を高速化するためのより良い方法について何かアドバイスがあれば教えてください。
編集:ネットワークはギガビット LAN 上にあるため、速度は問題になりません。ファイルをネットワーク パスにコピーするには、約 1 秒かかります。データの小さなチャンクで WriteFile() を呼び出していることに気付いたので、より大きなチャンクを書き込むように高レベルのコードを最適化することはおそらく役立つでしょうが、速度の違いは依然として非常に大きいため、尋ねる価値のある質問です.