4096个浮点数和2个选项哪个是最好的方法,为什么?

时间:2014-11-10 22:40:01

标签: c

好的我有4096个浮点数,我有2个选项如何将它们存储到数组中:

您将使用哪个选项以及为什么?

  1. 程序中的现有数组

      const float AB[4096] = {1.83839f, 2.99345f, .... };
    
  2. 程序启动时的循环数组

     float A[64] = {9.37373f, ....};
     float B[64] = {1.37373f, ....};
     float AB[4096] ={0};
     int i=0;
    
     for(a=0; a < 8; a++)
       for(b=0; b < 8; b++)
         for(x=0; x < 8; x++)
           for(z=0; z < 8; z++)
               AB[i++] = A[(b*8+x)] * B[z+(8*a)];
    

2 个答案:

答案 0 :(得分:2)

为了避免计算什么是基本上恒定的数据的运行时开销,以及大型初始化器的繁琐且容易出错的条目,一个简单的折衷方案是编写计算初始化器的代码,并且本身生成具有常量初始化器的代码。然后,将生成的代码构建到应用程序中。

答案 1 :(得分:0)

这取决于具体情况。但是如果你真的有一个4096元素浮点数组,那么你可能应该将数据存储在一个文件中,并只访问你需要的数据。这是因为:

sizeof(float)是4个字节。

4 * 4096 = 16384字节= 16 KILOBYTES

那些是巨大的记忆!因此,最好将它们存储在文件中的硬盘上。但是,这又取决于你正在编写的程序。