为什么像 WRITE(2) 这样的系统调用不提供缓冲区来提高速度?
Why system call like WRITE(2) doesn't provide buffer to increase speed?
与printf()
等函数相比,系统调用write()
通常较慢,因为它没有缓冲区。但是为什么不在 write()
中提供内置缓冲区呢?操作系统的速度很重要,不是吗?
操作系统不熟悉,一头雾水。
因为它们是对操作系统的低级调用,在该操作系统上实现了 fread
、fwrite
、fflush
等更高级别(缓冲)方法。
OSes' speed is important, isn't it?
是的。但假设应用程序将有效地进行 write()
调用。如果需要缓冲,应该使用fwrite
.
所以如果 read
没有缓冲并且缓冲更有效,他们为什么不隐藏它?
因为缓冲并不总是更有效。事实上,对于某些用例,缓冲流比直接使用 write
进行更多的复制。对于批量 I/O 操作,此额外副本会导致速度变慢 I/O.
与printf()
等函数相比,系统调用write()
通常较慢,因为它没有缓冲区。但是为什么不在 write()
中提供内置缓冲区呢?操作系统的速度很重要,不是吗?
操作系统不熟悉,一头雾水。
因为它们是对操作系统的低级调用,在该操作系统上实现了 fread
、fwrite
、fflush
等更高级别(缓冲)方法。
OSes' speed is important, isn't it?
是的。但假设应用程序将有效地进行 write()
调用。如果需要缓冲,应该使用fwrite
.
所以如果 read
没有缓冲并且缓冲更有效,他们为什么不隐藏它?
因为缓冲并不总是更有效。事实上,对于某些用例,缓冲流比直接使用 write
进行更多的复制。对于批量 I/O 操作,此额外副本会导致速度变慢 I/O.