Почему функция libc fwrite быстрее, чем функция записи syscall?

После предоставления той же самой программы, которая читает случайный сгенерированный входной файл и выводит ту же строку, которую она прочитала, на выход. Разница лишь в том, что на одной стороне яЯ предоставляю методы чтения и записи из системных вызовов Linux, а с другой стороны ям, используя fread / fwrite.

Синхронизируя мое приложение с вводом размером 10 МБ и выводя его в / dev / null, и убедившись, что файл не кэширован, ямы обнаружили, что libc 's fwrite быстрее при БОЛЬШОМ масштабе при использовании очень маленьких буферов (1 байт в случае).

Вот мой вывод времени, используя fwrite:

real    0m0.948s
user    0m0.780s
sys     0m0.012s

И используя системный вызов напишите:

real    0m8.607s
user    0m0.972s
sys     0m7.624s

Единственная возможность, о которой я могу думать, это то, что внутренне libc уже буферизует мой ввод ... К сожалению, я не смогЯ не могу найти столько информации в Интернете, поэтому, возможно, гуру могут мне помочь ».

Ответы на вопрос(3)

Ваш ответ на вопрос