Сначала проверьте, что ostream::write
вызывается неэффективно. В зависимости от вашей платформы, вы должны использовать:
- Windows:
procmon.exe
(из SysInternals Suite)
- Linux:
strace
- Solaris:
ktruss
- NetBSD:
ktrace
Проверьте, есть ли много вызовов WriteFile
(Windows) или write
(POSIX-подобный), которые пишут только несколько байтов, а именно меньше 100. Если вы не можете найти их, это может не помочь при написании оболочки .
Вышеуказанные инструменты также могут измерять, теряете ли вы время в ядре операционной системы или в коде пользователя. Это должно дать вам подсказку, где вы можете улучшить производительность.