Я работаю над разделом проекта, который анализирует журналы с сервера баз данных Postgres.Приложение разработано на C sharp Framework 4.0.
Журнал создается и отображается в DataGridView со следующими столбцами:
resultCode Statement Starttime Duration
XT001 select * from PizzaMade 01-02-2012 03:10:14 00:04:10
- Есть много строк журнала с одинаковым форматом.
- Datagridview заполняется из другого цикла путем анализа текстового файла.
Моя работа заключается в создании статистики из данных, доступных в Grid, в следующем формате
Statement Count countpercent Occurs_on
select * from PizzaMade 3 1.42 01/02 at 03pm [00:04:10], 01/02 at 04 [00:01:04]
select id,qty,table from PizzaMade 12 5.12 ...........
таким образом, в основном статистика отражает следующий
- a) выполненный оператор
- b) Подсчет количества раз, которое он появляется в сетке
- c) процент подсчета, которыйв основном это часть totalcounts, эта инструкция занимает
- d) объединенную строку, содержащую время начала, продолжительность
»Статистика сначала генерируется как Datatable, используя цикл for
foreach(DataGridViewRow dr in LogGrid.Rows)
{
// search in the Datatable if the statement is present
// if it is then add count , add starttime and duration to the column
// if not then add a newrow
}
»После заполнения таблицы данных я использую цикл для вычисления итоговой суммы
int totalcount = 0;
foreach (DataRow drin StatTable.Rows)
{
totalcount = totalcount + Convert.ToInt32(dr["count"].ToString());
}
» После вычисления счетчика есть цикл для вычисленияпроцент
foreach (DataRow dr in StatTable.Rows)
{
int c = Convert.ToInt32(dr["count"].ToString());
dr["countpercent"] = (c/totalcount)*100;
}
Хотя все кажется нормальным, весь метод работает медленно с большим количеством строк.
- Можете ли вы предложить методы для повышения производительности.
спасибо arvind