从Linux中的C ++程序连续快速(每秒30个)编写二进制文件(~12MB)

时间:2018-02-07 14:17:55

标签: c++ linux fwrite sata

我正在尝试将实时(30fps)的原始视频帧(每帧12.4MB)写入通过sata3(6Gb / sec)接口连接的CFast 2.0(ext4)卡。

该卡的额定速率为430MB /秒,当我使用连续的100MB文件写入对驱动器进行基准测试时,它可以达到~420MB /秒。

问题是,当我写小文件时,大约12MB,吞吐量下降到大约350MB /秒,这对我来说太慢了。

文件写入程序相对简单,基于fopen(伪代码):

foreachframe()
{
    file = fopen(frame_filename)
    fwrite(file, img_header)
    fwrite(file, img_data)
    fclose(file)
}

我已尝试过单线程和多线程,但没有太大区别。我猜测创建新文件并关闭它有一些重大的开销。目前文件系统是ext4,虽然我想最终使用exFat。

有没有办法与文件系统进行低级别交互,从而可以以更低的开销创建和填充大数据文件?或者,是否存在批量保存大量文件到磁盘的优化技巧?

0 个答案:

没有答案