Microsoft KB Archive/46741

From BetaArchive Wiki

Possible Cause for Slow Stream I/O

Q46741

5.10 6.00 6.00a 6.00ax 7.00 | 1.00 1.50 MS-DOS | WINDOWS kbprg ---------------------------------------------------------------------- The information in this article applies to: - The C Run-time (CRT), included with: - Microsoft C for MS-DOS, versions 5.1, 6.0, 6.0a, and 6.0ax - Microsoft C/C++ for MS-DOS, version 7.0 - Microsoft C++ for Windows, versions 1.0 and 1.5 ---------------------------------------------------------------------- In Microsoft C, the stream level I/O routines inherit their speed and flexibility from the buffering system they use. Upon opening a file with the fopen() function, a file record is created that contains pointers into a stream buffer. This buffer is then allocated (malloc-ed) when the first I/O operation is performed. If there is not enough room in the heap for this buffer allocation, the file operation continues with a buffer size of one character. A stream I/O routine that takes an excessive amount of time is probably the result of a failure to allocate the 512-byte buffer on the heap (near or far, depending on the memory model). Without this buffer, the I/O routines are extremely slow, requiring disk access for all I/O operations. Use one of the following two methods to work around this problem: - Reduce the amount of allocation on the heap. -or- - Change memory models to compact or large (if you are in small or medium). If you change memory models, you may need to use the /Gt switch to push static data out of DGROUP. Additional reference words: kbinf 1.00 1.50 5.10 6.00 6.00a 6.00ax 7.00 KBCategory: kbprg KBSubcategory: CRTIss

Keywords : kb16bitonly
Issue type :
Technology : kbVCsearch kbAudDeveloper kbCRT


Last Reviewed: July 20, 1997
© 2001 Microsoft Corporation. All rights reserved. Terms of Use.