CreateFileでのノンバッファ書き込みについて – プログラミング – Home

CreateFileでのノンバッファ書...
 
通知
すべてクリア

[解決済] CreateFileでのノンバッファ書き込みについて


+
 +
(@ )
ゲスト
結合: 17年前
投稿: 50
Topic starter  

次のソースを、CreateFile(Win32API)への置き換えを考えています。

MSDNで調べて、CreateFileにFILE_FLAG_WRITE_THROUGHを指定すればキャッシュされな
い。
とあり、試したのですがあまり効いていない様に見えました。
あまり効いていない。とは、即時に書き込まれる場合もあるが遅延書き込み中(?)の場合
もありました。

ノンキャッシュとは、ノンバッファリングと違うのでしょうか?

Log::Log()
{
m_file = 0 ;
}

Log::~Log()
{
close( m_file ) ;
}

bool Log::OpenLog( const char *fPath )
{
m_file = fopen( fPath , a+ ) ;
setvbuf( m_file , NULL , _IONBF , 0 ) ;
}

bool Log::Write( const char *buff )
{
fprintf( m_file , %s\r\n , buff ) ;
fflush( m_file ) ;
}


引用未解決
トピックタグ
+
 +
(@ )
ゲスト
結合: 17年前
投稿: 50
Topic starter  

FILE_FLAG_NO_BUFFERINGは制約厳しいみたなので避けています・・・


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 22年前
投稿: 196
 

>ノンキャッシュとは、ノンバッファリングと違うのでしょうか?

違うと思います。

一般論で言うと

キャッシュは、ファイルに書き出し済みのデータを保持しておいて読み出しの高速化を
図るプロセスグローバルなサービス。

バッファは、小刻みな I/O をバッファを介すことで実際の I/O の回数を減らして性能
向上を図るプロセスローカルなサービス。

ではないかと。


返信引用
ぷりん
 ぷりん
(@ぷりん)
ゲスト
結合: 23年前
投稿: 4
 

> ノンキャッシュ
ノンキャッシュは文字通りキャッシュしないことであり、これをすると一般的に処理速度
が落ちます(悪化します)。そのかわり急にPCの電源が切れた場合でも、HDDに無事に格
納されている可能性が高まります。逆にキャッシュしてれば速度は上がりますが、電源が
切れた場合に失われる可能性が高まります。

> あまり効いていない様に見えました。
OSのメモリ上でキャッシュされている場合もあれば、HDDのキャッシュ上でキャッシュさ
れている場合もありますし、これを一般ユーザーが体感するのは難しい気がします。HDD
メーカー等の計測装置じゃないと無理じゃないでしょうか?

普通HDDのキャッシュと言うとこういう意味だと思いますが…


返信引用
+
 +
(@ )
ゲスト
結合: 17年前
投稿: 50
Topic starter  

ちょっと質問の仕方が悪かったです(__)スミマセン
Win32APIで、setvbuf( m_file , NULL , _IONBF , 0 ) に中る処理って存在しないの
か?
だったのです。が、置き換え中止となったので終了とさせていただきます。
回答してくれた方々には感謝です。


返信引用
ぷりん
 ぷりん
(@ぷりん)
ゲスト
結合: 23年前
投稿: 4
 

そういうのは質問の仕方が悪かったのではなく、用語を含めて基本的な知識が無いだけだ
と思いますがね。まあ、そういうのを自分で認めるのは難しいですな。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました