我以约100帧/秒的速度从相机进入图像流,每张图像大约2 MB。现在只是因为磁盘写入速度,我知道我不能写每一帧,所以我只是试图每秒钟节省大约三分之一的帧。将数据流写入磁盘的最快方法
流是大型字符数组的循环缓冲区。现在我使用fwrite将每个阵列转储到缓冲的临时文件,但它似乎只能以20-30 MB/s的速度写入,而理论上硬盘的速度应该高达80-100 MB/s, s
有什么想法?有没有比fwrite()更快的编写方式或优化它的方法? 更一般地说,将大量数据转储到标准硬盘驱动器的最快方法是什么?
在* nix系统上使用特定于操作系统的调用,比如'write'来获得无缓冲的调用? – dirkgently
只是一个提示,但预先分配文件可能会有所帮助;写几千兆字节的'NUL'字节到一个文件中(并且不要只是'fseek()'并在最后写入,这将是[稀疏](http://en.wikipedia.org/wiki/Sparse_file )),因此文件系统无需在从摄像机接收数据时找到块的位置。 – Ashe
@dirkgently没有缓冲的话,不会使用原语的效率会降低,除非您传递的是恰好是扇区大小倍数的数据块? – SJuan76