【问题标题】:C/C++ read binary files (flaot numbers) at one timeC/C++ 一次读取二进制文件(浮点数)
【发布时间】: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 个浮点数读取到数据数组中吗? (后一个选项的更简单的代码可能比任何性能变化都更重要。)

标签: c++ fread floating


【解决方案1】:

您可以一次阅读所有内容。 fread(data,sizeof(float)*100,1,f);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    相关资源
    最近更新 更多