Solved

How often can I call CFile::Flush(), or how often should I?

Posted on 2014-02-07
5
761 Views
Last Modified: 2014-02-08
I have a program that saves data using a CFile object. I call Write() followed by Flush() every time data is available to be saved. My question is, how often should I be calling Flush()? My program can call the Write() function up to 100 times a second. Is it ok to call Flush() 100 times a second? Will this cause any problems? My program is hanging and I'm looking for likely places where the performance could be problematic.
0
Comment
Question by:goondoo27
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
5 Comments
 
LVL 86

Expert Comment

by:jkr
ID: 39844127
You can of course call it as often as you want, the performance penalty should be minimal - if there is no data to be written, the function will just return without doing anything. Depending on what kind of data you are writing. You however might want to consider opening the file as 'unbuffered' , so you don't even have to explicitly 'flush' any file buffers.
0
 

Author Comment

by:goondoo27
ID: 39844621
Thanks jkr. There will be data to flush every time I call Flush() because I only call it after a Write(). I'll look at opening the file as unbuffered. So you don't see any performance issue with calling Flush() right after Write() at say 100 to 300 times a second?
0
 
LVL 86

Expert Comment

by:jkr
ID: 39844647
Again, that will depend on the amount of data you are writing. Also, why do you need everyhing to be written immediately? I'd say that flushing all buffers is a good thing to do when a coherent point is reached, e.g. if you were writing audio data, you'd call 'Flush()' when a full song/track is ready (yes, not really a perfect example)...
0
 

Author Comment

by:goondoo27
ID: 39844657
I'm writing a text file. Each Write() will put a single line of statistical data into the file. I'd estimate that up to 200 characters are written each time I call Write(). I originally put the Flush() call in the code so that the stats were immediately saved to the file and could be viewed by programs tailing the text file. Is there a better way to do this?
0
 
LVL 86

Accepted Solution

by:
jkr earned 500 total points
ID: 39844666
No, that sounds reasonable. And given the amount of data, that shouldn't cause any trouble.
0

Featured Post

Get 15 Days FREE Full-Featured Trial

Benefit from a mission critical IT monitoring with Monitis Premium or get it FREE for your entry level monitoring needs.
-Over 200,000 users
-More than 300,000 websites monitored
-Used in 197 countries
-Recommended by 98% of users

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When asking a question in a forum or creating documentation, screenshots are vital tools that can convey a lot more information and save you and your reader a lot of time
Sometimes clients can lose connectivity with the Lotus Notes Domino Server, but there's not always an obvious answer as to why it happens.   Read this article to follow one of the first experiences I had with Lotus Notes on a client's machine, my…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
With the advent of Windows 10, Microsoft is pushing a Get Windows 10 icon into the notification area (system tray) of qualifying computers. There are many reasons for wanting to remove this icon. This two-part Experts Exchange video Micro Tutorial s…

724 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question