我正在使用C++创建一个在Linux上运行的实用程序,可以将视频转换为专有格式。视频帧非常大(高达16兆像素),我们需要能够直接跳转到精确的帧编号,因此我们的文件格式使用libz来压缩每个帧并将压缩数据附加到文件中。完成所有帧的写入后,会将包括每个帧元数据(包括它们的文件偏移量和大小)的日志写入文件末尾。
目前我正在使用ifstream和ofstream进行文件I/O,但我正在寻求尽可能多的优化。我听说mmap()可以在很多情况下提高性能,想知道我的情况是否适用。我们的文件将达到数十到数百GB,尽管写入始终是顺序进行的,但随机访问读取应该在恒定时间内完成。有没有人对我是否应该进一步调查这个问题有任何想法?如果有,有没有什么要注意的事项?
谢谢!
目前我正在使用ifstream和ofstream进行文件I/O,但我正在寻求尽可能多的优化。我听说mmap()可以在很多情况下提高性能,想知道我的情况是否适用。我们的文件将达到数十到数百GB,尽管写入始终是顺序进行的,但随机访问读取应该在恒定时间内完成。有没有人对我是否应该进一步调查这个问题有任何想法?如果有,有没有什么要注意的事项?
谢谢!