Есть ли смысл использовать 500-байтовый буфер для простого преобразователя верхнего регистра? - PullRequest
1 голос
/ 29 марта 2011

Я читаю программирование с нуля

в главе 5,

программа использует 500-байтовый буфер для преобразования символов длиной 1 байт.

не должен ли он использовать двойной цикл?

loop1 для чтения 500 байтов на 500 байтов из файла.

loop2 для обработки чего-либо в 500 байт, может быть, байт в момент времени.

и я думаю, что это делает программу немного более сложной.

если я использую байтовый буфер для преобразования

нет ничего, кроме одной петли

loop1: прочитать 1 байт и обработать его.

Есть ли смысл использовать 500-байтовый буфер для простого преобразователя верхнего регистра?

моя среда разработки - x86, linux, сборка, at & t синтаксис

1 Ответ

1 голос
/ 29 марта 2011

Единственная причина подумать о том, чтобы делать это 500 (или более) байтов за раз, заключается в том, что это может уменьшить количество вызовов функций в библиотеке и / или службах операционной системы, которые вы используете для ввода-вывода.Я предлагаю вам попробовать оба способа и измерить разницу в производительности для себя.Допустим, ваши две версии скомпилированы в исполняемые файлы с именем ala uppercase. version , вы можете получить отчет о ЦП и истекшее время для его запуска, набрав в командной строке следующую команду:

time uppercase.byte_by_byte < input > output
time uppercase.500_byte_blocks < input > output
...