- read/write函数与fgetc/fputc函数谁的速度快?

如图所示,库函数fputc/fgetc无法直接进入到内核空间,需要通过调用read/write函数,实现对文件的读写操作,从这一角度考虑似乎read/write的速度会更加快速,真的是这样么?
答案是否定的,实际上库函数fputc/fgetc的速度将远快于系统调用函数。

如上图所示,write函数需要不断重复的执行系统调用进入到内核写入内核缓存,当内核系统缓存写满(4kb)后再写入磁盘;
而库函数内部就有一个库函数缓存,当库函数写满后(4kb)再调用系统调用函数read/write函数进入内核写入内核缓存并立即写入磁盘中。
因此库函数fgetc/fputc速度比系统调用函数read/write函数速度更快。
- 缓冲区
read/write函数被称为Unbuffered I/O.指的是无用户级缓冲区,但不保证不适用内核缓冲区。
3.预读入缓输出机制
本文探讨了库函数fputc/fgetc与系统调用read/write在文件读写速度上的差异。虽然write函数涉及多次系统调用,但fputc/fgetc利用库函数缓存提高了效率,因此在多数情况下fputc/fgetc的速度更快。由于它们内部的缓冲机制,fgetc/fputc在写满缓存后才调用read/write,减少了系统调用的频率,从而提升了性能。
393

被折叠的 条评论
为什么被折叠?



