Linux系统编程-库函数fputc和系统调用write的对比

86 阅读1分钟

系统调用才能够链接用户态和内核态
库函数也是最终也是使用的系统调用
但是fputc的速度大于write速度
因为fputc有预读入缓输出的机制,现在用户态存一堆,再一次刷入内核态
但是write每次都刷入内核态,再返回用户态读取
而内核态和用户态的切换非常耗时,相当于同样的数据write要多切换好几次

内核到磁盘也是预读入缓输出,不然磁盘每次都要移动指针啥的,你存入一堆,再根据算法选最快的物理写入路径。

基本整个操作系统都有预读入缓输出机制

但是你不能说系统调用就垃圾,比如即时对话,显然不需要缓输出,直接狂刷是最好的

image.png