Linux 如何用给定的数字填充二进制文件?

Linux 如何用给定的数字填充二进制文件?,linux,file-io,mmap,memcpy,Linux,File Io,Mmap,Memcpy,在我的系统中,有许多二进制文件用于存储矩阵。当创建这样的文件时,必须用一些值来填充它,即NAN表示带有浮点数的矩阵。有没有什么好的办法来加速这个过程 当前的解决方案是这样的:这些文件使用mmap()进行内存映射,因此文件由memcpy填充,如下所示: float v = NAN; for (i=0; i<n; ++i){ memcpy(start+i, &v, sizeof(v)); } float v=NAN; 为了(i=0;我为什么不只是在开始时创建缓冲区,这样它就已经是

在我的系统中,有许多二进制文件用于存储矩阵。当创建这样的文件时,必须用一些值来填充它,即NAN表示带有
浮点数的矩阵。有没有什么好的办法来加速这个过程

当前的解决方案是这样的:这些文件使用
mmap()
进行内存映射,因此文件由
memcpy
填充,如下所示:

float v = NAN;
for (i=0; i<n; ++i){
  memcpy(start+i, &v, sizeof(v));
}
float v=NAN;

为了(i=0;我为什么不只是在
开始时创建缓冲区,这样它就已经是文件的一部分了?是的。好主意。对缓冲区的大小有什么建议吗?谢谢。我做了一些测试,大容量复制确实有帮助,缓冲区的大小对执行时间的影响很小。@IgnacioVazquez Abrams我发现缓冲区的大小实际上是sm比页面大小小一点更好。例如,128比4K快一点。你对此有什么想法吗?