LINUX.ORG.RU

История изменений

Исправление i-rinat, (текущая версия) :

более медленное посимвольное чтение для чего-то нужно. Вот для чего - ума не приложу.

В сях можно использовать fread() для чтения из файла по одному байту. Можно блоками. Но когда хочется выжать скорости, в дело идут read(). Или readv(), если нужно читать в несколько буферов сразу, и выделять один сплошной буфер не хочется. Или preadv(), если нужно сэкономить на вызове lseek(). Или sendfile(), если нет смысла копировать данные из пространства ядра в юзерспейс только чтобы потом снова копировать в пространство ядра, чтобы послать в сокет. Так дальше можно добраться до работы с DPDK, чтобы не платить за абстракции сокетов.

Но всё-таки иногда удобнее просто через fread() несколько байт прочитать, чтобы не заморачиваться со сложностями там, где это не нужно.

Лисп — не Си. Но не думаю, что он в этом вопросе сильно отличается.

Исходная версия i-rinat, :

более медленное посимвольное чтение для чего-то нужно. Вот для чего - ума не приложу.

В сях можно использовать fread() для чтения из файла по одному байту. Можно блоками. Но когда хочется выжать скорости, в дело идут read(). Или readv(), если нужно читать в несколько буферов сразу, и выделять один сплошной буфер не хочется. Или preadv(), если нужно сэкономить на вызове lseek(). Или sendfile(), если нет смысла копировать данные из пространства ядра в юзерспейс только чтобы потом снова копировать в пространство ядра, чтобы послать в сокет. Так дальше можно добраться до работы с DPDK, чтобы не платить за абстракции сокетов.

Но всё-таки иногда удобнее просто через fread() несколько байт прочитать, чтобы не заморачиваться со сложностями там, где это не нужно.