我刚把代码交给了我.代码用C#编写,每秒将实时数据插入数据库.数据在时间上累积,使数字变大.
数据在第二次内更新,然后在第二次结果结束时插入并插入.
我们曾经通过属性直接在第二行内处理数据集行.例如,像这样的许多操作’datavaluerow.meanvalue = mean;可能会发生.
我们发现在运行探测器之后这会降低性能,因为内部转换已经完成,所以我们创建了2d小数组,在其上执行更新,然后仅在第二个末尾将值分配给数据行.
我运行了一个分析器,发现它仍然花费了很多时间(虽然少于加入时频繁访问数据行的时间).
在第二秒结束时执行的代码如下
public void UpdateDataRows(int tick)
{
//ord
//_table1Values is of type decimal[][]
for (int i = 0; i < _table1Values.Length; i++)
{
_table1Values[i][(int)table1Enum.barDateTime] = tick;
table1Row[i].ItemArray = _table1Values[i].Cast<object>().ToArray();
}
// this process is done for other 10 tables
}
有没有办法进一步改进这种方法.
解决方法:
一个显而易见的问题是:当你只用整数更新它们时,为什么你有一个二维小数组?你可以用int [] []来逃避吗?
接下来,为什么要在每次迭代时访问(int)table1Enum.barDateTime?鉴于那里涉及转换,您可能会发现如果将其从循环中提取出来会有所帮助.
但是,我怀疑大部分时间都花在_table1Values [i] .Cast< object>().ToArray()上.你真的需要这样做吗?获取decimal [](或int [])的副本比在每次调用的每次迭代中装箱每个值更快 – 然后创建另一个数组.