Я только что получил код, переданный мне. Код написан на C#, и он вставляет данные в реальном времени в базу данных каждую секунду. Данные накапливаются во времени, что делает их большими.Как этот код может быть оптимизирован?
Данные обновляются в течение второго много раз, затем в конце второго результата берется и вставляется.
Мы использовали адреса строк данных непосредственно во второй части через свойства. Например, многие операции, такие как этот datavaluerow.meanvalue + = mean; может иметь место. , мы выяснили, что это ухудшает производительность после запуска профилировщика из-за внутреннего выполнения, поэтому мы создали 2-й массив десятичных знаков, на которых выполняются обновления, тогда значения присваиваются датарам только в конце второго. Я запустил профайлер и узнал, что он все еще занимает много времени (хотя время, затраченное на то, что время, когда оно было добавлено, часто обращалось к datarows).
код, который exectued в конце второго заключается в следующем
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
}
Есть ли способ улучшить этот подход.
Где ваше профилирование показывает больше всего времени? – Oded
Внесите литье (int) table1Enum.barDateTime из цикла. –
@ Одед, большую часть времени тратится на операцию литья – mustafabar