Почему системный вызов типа WRITE (2) не предоставляет буфера для увеличения скорости? - PullRequest
0 голосов
/ 28 апреля 2018

По сравнению с такими функциями, как printf(), системный вызов write() обычно медленнее, поскольку не имеет буфера. Но почему бы не предоставить встроенный буфер в write(). Скорость ОС важна, не так ли?

Я не знаком с операционной системой, она меня довольно смущает.

1 Ответ

0 голосов
/ 28 апреля 2018

Поскольку это низкоуровневые вызовы операционной системы, в которых реализованы методы более высокого уровня (буферизованные), такие как fread, fwrite, fflush и т. Д.

Скорость ОС важна, не так ли?

Да, это так. Но предполагается, что приложение будет эффективно выполнять write() вызовов. Если требуется буферизация, следует использовать fwrite.


Так что, если read не буферизуется и буферизация более эффективна, почему бы им не скрыть это?

Поскольку буферизация не всегда более эффективна. Фактически, для некоторых сценариев использования буферный поток выполняет больше операций копирования, чем непосредственно write. Для массовых операций ввода-вывода эта дополнительная копия приводит к замедлению ввода-вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...