Re: Large gap between fwrite and write, and fread and read

看板FB_hackers作者時間18年前 (2007/07/24 11:05), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
On Tue, 17 Jul 2007, Heiko Wundram (Beenic) wrote: > On Monday 16 July 2007 14:06:57 Garrett Cooper wrote: >> I ran some tests and I noticed a large difference in the cumulative >> sums of fwrite(2) vs write(3) and fread(2) vs read(3) (3-fold >> differences on a real machine). > > This difference is at least partially explained when looking > at /usr/include/stdio.h, which defines the FILE structure: read/write on a > file descriptor is (pretty much) a direct syscall with operating system > specific semantics on a wide range of behavior, such as buffering, flushing > and seeking in read/write-opened files, whereas fread/fwrite on FILE*'s is > an "abstraction" of file access for which the stdio-API defines semantics, > such as buffering, the time flushing takes place and seeking in > read/write-opened files, across different flavors of POSIX-compatible libc's > equally. > > As the stdio-interface is a "wrapper" (with indirect calls calling the syscall > read at some point in time, see the FILE-structure definition), you'll have > to expect a difference in runtime, too. > > (You mixed up f{read,write}(3) and {read,write}(2), just as a sidenote, which > is also indicative of the difference: man3 is indicative of a libc > implementation, whereas man2 generally contains syscall documentation) > > -- > Heiko Wundram Yeah, that's what I meant. I was rather tired when I made that post at 5:30 this morning. Heh. Thank you for the additional info though. That was brief, but comprehensive :). -Garrett _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"
文章代碼(AID): #16fMo400 (FB_hackers)
文章代碼(AID): #16fMo400 (FB_hackers)