C/C++ 一次读取二进制文件(浮点数)
Posted
技术标签:
【中文标题】C/C++ 一次读取二进制文件(浮点数)【英文标题】:C/C++ read binary files (flaot numbers) at one time 【发布时间】:2021-04-16 00:32:32 【问题描述】:我想知道有没有办法在 C 或 C++ 中加快 fread?例如,如果我想读取一个包含 100 个 4 字节浮点数的二进制文件。我愿意:
float *data=(float*)calloc(sizeof(float), 100);
float datatmp=0.0;
f=fopen("datafilename","rb");
for(int i=0;i<100;i++)
fread(&datatmp,4,1,f);
data[i]=datatm;
flcose(f);
我的问题是:我可以一次读取所有 100 个浮点数并将它们放入数据数组中吗?这会比使用循环更快吗?
谢谢。
【问题讨论】:
好吧,你告诉我们?如果您尝试两种方式并对其进行计时,您测量了哪些差异(如果有)? 这会比使用循环更快吗?很可能不会。您是否在编译器中启用了优化?为什么你认为读取 100 个浮点数是任何类型的瓶颈? "我可以一次读取所有 100 个浮点数并将它们放入数据数组吗?" -- 我想这取决于您的编程技能。你能写代码来做到这一点吗?或者,您可以编写一些代码来一次(直接)将所有 100 个浮点数读取到数据数组中吗? (后一个选项的更简单的代码可能比任何性能变化都更重要。) 【参考方案1】:您可以一次阅读所有内容。 fread(data,sizeof(float)*100,1,f);
【讨论】:
以上是关于C/C++ 一次读取二进制文件(浮点数)的主要内容,如果未能解决你的问题,请参考以下文章