我刚刚拿到了一份代码。该代码使用C#编写,每秒将实时数据插入数据库。由于数据在时间上累积,因此数字会变得很大。
数据在一秒内多次更新,然后在结束时取结果并插入。
我们曾经直接通过属性在第二个数据集行中进行操作。例如,很多操作像这样'datavaluerow.meanvalue += mean;'可以发生。 我们发现,由于内部转换的原因,这会降低性能,因此我们创建了一个十进制的2D数组,在其中进行更新,然后仅在第二个结尾时将值分配给数据行。 我运行了分析器,发现它仍然需要很长时间(虽然比经常访问数据行时花费的时间少)。
在第二个结束时执行的代码如下:
有没有办法进一步改善这种方法?
数据在一秒内多次更新,然后在结束时取结果并插入。
我们曾经直接通过属性在第二个数据集行中进行操作。例如,很多操作像这样'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
}
有没有办法进一步改善这种方法?