Linux探秘之I/O效率(3)

  但是不同的标准I/O函数,不同的缓存类型也会带来不同的效率。如上图,当选择系统最佳I/O长度,即BUFFSIZE的大小和文件系统的块长一致,可以得到最佳的时间。当选用标准I/O函数时,每次一个字符函数fgetc、fputc和每次一行函数fgets、fputs函数相比要花费较多的CPU时间,而每次单个字节调用系统I/O则花费更多的时间,如果是一个100M的文件,则要执行大概2亿次函数调用,也就引起2亿次系统调用(从用户缓冲区到内核缓冲区,再到磁盘),而fgetc版本也执行了2亿次函数调用,但只引起了大约25222次系统调用,所以,时间就大大减少了。

  综合以上,标准I/O函数虽然基于系统I/O实现,但很大程度上减少了系统调用的次数,而且不用人为关心缓冲区大小的选择,整体上提高了I/O的效率。另外,标准I/O提供了多种缓存类型,方便程序员根据不同的应用需求选择不同的缓存要求,提高了编程的灵活性,当选择无缓存时,就相当于直接调用系统I/O。

  OK,大概的内容就以上这些,当然关于I/O操作这块还有很多需要注意的点,而且还有很多更加高级的I/O函数,这些在后面遇到再来做总结。最后,如果您觉得这篇文章对您有帮助就粉我吧,还是那句话,你的关注是我写作的最大动力。

UNIX环境高级编程中文第二版PDF高清版 下载地址 

Unix环境高级编程 源代码地址

Unix环境高级编程源码编译

apue.h头文件(Unix环境高级编程)

《Unix环境高级编程》(第二版)apue.h的错误

Unix环境高级编程第二版读书笔记

《Unix环境高级编程》中apue.h的问题

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5940f6616ecce0b4c89301f31bb7971b.html