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进行分析。
注意:我只是把我的实际代码简化成这样;上面的代码片段还没有经过测试,但是我很有信心用上面的代码片段捕捉到问题的要点。