代码之家  ›  专栏  ›  技术社区  ›  Graviton

访问字典和多维数组速度慢

  •  1
  • Graviton  · 技术社区  · 14 年前

    O(1) .

    这是我的密码

    public struct StateSpace
    {
    public double q;
    public double v;
    public double a;
    }
    
    public class AccessTest
    {
       public Dictionary<int, Dictionary<double,StateSpace>> ModeStateSpace;
       public double[,] eigenVectors;
       public void AccessJob(int n, double times)
      {
         var sumDisplacement = new double[6];
         for(int i=0; i< n; i++)
         {
           var modeDisplacement = ModeStateSpace[i][times].q;  //takes 5.81 sec
           for(int j=0; j<6; j++)
           {
                    var eigenVector = eigenVectors[i, j];  //takes 5.69 sec
                    sumDisplacement[i] += eigenVector*modeDisplacement ; //takes 1.06 sec        
           } 
         }
      } 
    
    
    
    }
    

    这个 n 在这里并不重要,每次操作所需时间的绝对大小也不重要。重要的是算术运算和字典查找时间之间的比率。

    编辑:我正在使用Ants Profiler进行分析。

    注意:我只是把我的实际代码简化成这样;上面的代码片段还没有经过测试,但是我很有信心用上面的代码片段捕捉到问题的要点。

    1 回复  |  直到 14 年前