在我的系统中,有很多用于存储矩阵的二进制文件。当创建这样的文件时,它必须填充一些值,即对于具有float
个数字的矩阵的NAN。有没有很好的解决方案来加快这个过程?
目前的解决方案是这样的:这些文件使用mmap()
进行内存映射,因此文件由memcpy
填充,如下所示:
float v = NAN;
for (i=0; i<n; ++i){
memcpy(start+i, &v, sizeof(v));
}
其中n
是矩阵中元素的数量,start
是内存映射地址。
我使用memcpy
代替buff[i] = NAN
,因为矩阵元素的类型可能不同。
在这种情况下批量复制会有帮助吗?例如,我可以在内存中创建一个填充NAN的缓冲区,然后将缓冲区复制到start
。对缓冲区的大小有什么建议吗?