コードが渡されました。コードはC#で記述されており、リアルタイムデータを毎秒データベースに挿入します。データは時間とともに蓄積されるため、数値が大きくなります。
データは1秒以内に何度も更新され、2番目の結果の終わりに取得されて挿入されます。
以前は、プロパティを介して1秒以内にデータセット行を直接アドレス指定していました。たとえば、このような多くの操作'datavaluerow.meanvalue + = mean; 発生する可能性があります。内部キャストが行われたため、プロファイラーを実行した後、これがパフォーマンスを低下させていることがわかりました。そのため、更新が実行される2次元の小数配列を作成し、2番目の終わりにのみ値がデータ行に割り当てられました。プロファイラーを実行したところ、まだ多くの時間がかかっていることがわかりました(ただし、合計すると、データ行に頻繁にアクセスするのにかかる時間よりも短くなります)。
秒の終わりに実行されるコードは次のとおりです
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
}
このアプローチをさらに改善する方法はありますか?