c# – 如何进一步优化此代码?

我刚把代码交给了我.代码用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 [])的副本比在每次调用的每次迭代中装箱每个值更快 – 然后创建另一个数组.

上一篇:com.alibaba.fastjson把JSONObject转换为Map对象


下一篇:c# – 从单行的DataTable中提取值