После предоставления той же программы, которая считывает случайный сгенерированный входной файл и перекликается с той же строкой, которую он читает на выходе. Единственное различие заключается в том, что с одной стороны я предоставляю методы чтения и записи из системных вызовов linux, а с другой стороны я использую fread/fwrite.
Сроки ввода моего приложения с размером 10 Мб и повторением его /dev/null, и убедитесь, что файл не кэширован, я обнаружил, что libc fwrite быстрее по шкале LARGE при использовании очень маленьких буферов ( 1 байт в случае).
Вот мой вывод со времени, используя fwrite:
real 0m0.948s
user 0m0.780s
sys 0m0.012s
И используя команду syscall write:
real 0m8.607s
user 0m0.972s
sys 0m7.624s
Единственная возможность, о которой я могу думать, это то, что внутренний libc уже выполняет буферизацию моего ввода... К сожалению, я не мог найти такую информацию в Интернете, поэтому, возможно, гуру здесь могут помочь мне.