- Регистрация
- 17.09.2011
- Сообщения
- 265
- Благодарностей
- 25
- Баллы
- 28
Всем привет.
Подскажите пожалуйста кто знает, можно ли ускорить выполнение кода?
Суть скрипта: есть база, и есть фраза по ней ищем в каждой ячейке столбца G каждой строки базы, если ячейка включает фразу, то переносим строку в результат.
Сейчас скрипт по каждой фразе отрабатывает секунд за 5-10. Но фраз в задаче может быть 1000, что сильно увеличивает время выполнения.
Подскажите пожалуйста кто знает, можно ли ускорить выполнение кода?
Суть скрипта: есть база, и есть фраза по ней ищем в каждой ячейке столбца G каждой строки базы, если ячейка включает фразу, то переносим строку в результат.
Сейчас скрипт по каждой фразе отрабатывает секунд за 5-10. Но фраз в задаче может быть 1000, что сильно увеличивает время выполнения.
C#:
// берем регулярное выражение для парсинга из переменной
var parserRegexPattern = project.Variables["task_phrase_word_1"].Value;
var parserRegex = new System.Text.RegularExpressions.Regex(parserRegexPattern);
// получаем таблицу, в которой будем искать
var sourceTable = project.Tables["база"];
// получаем таблицу, в которую будем класть
var destTable = project.Tables["база"];
// ищем в каждой строчке в таблице
for(int i = 0; i < sourceTable.RowCount; i++)
{
// читаем строку из таблицы (это будет массив ячеек)
var cells = sourceTable.GetRow(i).ToArray();
// Проверяем длину массива cells
if (cells.Length > 6 && cells[6] != null)
{
// Игнор регистра -- приводим значение нужной ячейки к нижнему регистру
cells[6] = cells[6].ToLower();
// Проверяем ячейку регулярным выражением, если есть совпадение кладем результат во вторую таблицу
if (parserRegex.IsMatch(cells[6]))
destTable.AddRow(cells);
}
}