哪些是HD中数据密集型读写的最佳实践?

ton*_*ian 8 c c++ io performance disk

我正在开发一个C++应用程序(在Linux机器中运行),它非常密集地读取日志文件并将派生结果写入磁盘.我想知道哪些是优化这类应用程序的最佳实践:

  • 哪些OS调整可以提高性能?
  • 哪种编程模式可提高IO吞吐量?
  • 预处理数据(转换为二进制,压缩数据等)是一个有用的措施吗?
  • 分块/缓冲数据是否有助于提高性能?
  • 我应该注意哪些硬件功能?
  • 哪些实践最适合在这些应用程序中进行性能分析和测量?
  • (在这里表达我缺少的担忧)

有一个很好的阅读,我可以得到这个基础知识,所以我可以调整现有的技术诀窍我的问题?

谢谢

Fre*_*Foo 6

压缩当然可以帮助很多,并且比调整操作系统简单得多.查看Boost.IOStreams库中的gzipbzip2支持.不过,这会对处理器产生影响.

测量这些类型的作业从time命令开始.如果系统时间与用户时间相比非常高,那么您的程序会花费大量时间进行系统调用.如果挂钟("实际")时间与系统和用户时间相比较高,则它正在等待磁盘或网络.top显示程序CPU使用率低于100%的命令也是I/O瓶颈的标志.