оптимизировать запись в файл с помощью zlib? - PullRequest
1 голос
/ 03 июня 2011

Я профилировал свое приложение и, по-видимому, 37% времени в моем приложении находится в ostream :: write. Меньше чем 7% фактически сжимали это (deflate_slow - имя функции, которое это дало мне).

Как я могу оптимизировать файловый ввод-вывод с помощью zlib? я должен написать свою собственную обертку fopen / fwrite / fread / fclose? Существует ли обертка, которая существует? Могу ли я сделать что-то с размером буфера (я хотел бы, чтобы он большой). Что я могу сделать, чтобы писать быстрее?

1 Ответ

0 голосов
/ 03 июня 2011

Сначала проверьте, что ostream::write вызывается неэффективно. В зависимости от вашей платформы, вы должны использовать:

  • Windows: procmon.exe (из SysInternals Suite)
  • Linux: strace
  • Solaris: ktruss
  • NetBSD: ktrace

Проверьте, есть ли много вызовов WriteFile (Windows) или write (POSIX-подобный), которые пишут только несколько байтов, а именно меньше 100. Если вы не можете найти их, это может не помочь при написании оболочки .

Вышеуказанные инструменты также могут измерять, теряете ли вы время в ядре операционной системы или в коде пользователя. Это должно дать вам подсказку, где вы можете улучшить производительность.

...