По моим тестам fprintf медленнее fputs+sprintf, то есть быстрее вывести в память всё sprintf-ами и вывести затем в файл одним fputs. Однако на практике в моем приложении это не всегда подтверждается (есть места где fprintf оказывается быстрее sprintf+fputs).
1. От чего зависит скорость работы fprintf (при стандартных размерах буферов, т.е. без игр с setvbuf), и разная ли будет относительная скорость работы fprintf/sprintf+fputs для разных платформ? Или я совсем не прав, потому что тесты выводили информацию на stderr, который я сливал в /dev/null (вроде stderr запрещено буферизовать).
2. Стоит ли fputs заменить на fwrite в случае если sprintf+fputs все-таки лучше?
По коду: рассматриваю использовать ли Nx sprintf+N/50x fputs или Nx fprintf, размер порции частовыводимой информации в файл от 5 до 32 байт (N/50 - это неподтвержденная моя прикидка).
P.S. Поделитесь опытом. Да, программа обрабатывает входящий поток миллионов записей... (wc -l для типового файла выдал 6'896'149).