Провел строгие замеры выполнения кода на клиенте (32b версия ВК) в консоли кода (ИР), в которой есть специальные функции для проведения сравнительных замеров с контролем отключенности отладчика.
Код:
ПодключитьВнешнююКомпоненту("D:\Program Files\1cv82\common\rex32.dll", "V8RegEx", ТипВнешнейКомпоненты.Native);
текст = "луоалаокоащроощурагк кашгкаршгукрашгукр 87677 ыолвраылораыолршгр 8777 ыолвапаоыпорыпа рыпарваорпаырпа 999";
Количество = 100000;
ре = Новый("V8RegEx");
ЛксНачатьЗамер(Количество);
Для К = 1 По Количество Цикл
результат1 = Новый Массив;
ре.Шаблон = "\d+";
ре.Строка = текст;
Пока ре.Найти() Цикл
результат1.Добавить(ре.Группа(0));
КонецЦикла;
КонецЦикла;
ЛксКончитьЗамер();
ре = Новый COMОбъект("Vbscript.RegExp");
ре.Global = Истина;
ЛксНачатьЗамер(Количество);
Для К = 1 По Количество Цикл
результат2 = Новый Массив;
ре.Pattern = "\d+";
м = ре.Execute(текст);
ЧислоВхождений = м.Count();
Для у = 0 По ЧислоВхождений - 1 Цикл
результат2.Добавить(м.Item(у).Value);
КонецЦикла;
КонецЦикла;
ЛксКончитьЗамер();
///////////////////////////////////////
ре = Новый("V8RegEx");
ре.Шаблон = "\d+";
ЛксНачатьЗамер(Количество);
Для К = 1 По Количество Цикл
результат1 = Новый Массив;
ре.Строка = текст;
Пока ре.Найти() Цикл
результат1.Добавить(ре.Группа(0));
КонецЦикла;
КонецЦикла;
ЛксКончитьЗамер();
ре = Новый COMОбъект("Vbscript.RegExp");
ре.Global = Истина;
ре.Pattern = "\d+";
ЛксНачатьЗамер(Количество);
Для К = 1 По Количество Цикл
результат2 = Новый Массив;
м = ре.Execute(текст);
ЧислоВхождений = м.Count();
Для у = 0 По ЧислоВхождений - 1 Цикл
результат2.Добавить(м.Item(у).Value);
КонецЦикла;
КонецЦикла;
ЛксКончитьЗамер();
Результаты:
Цитата:
Окончание замера "Замер_31" - Длительность = 5с, Среднее = 0.00005 с
Окончание замера "Замер_32" - Длительность = 2.565с, Среднее = 0.00002565 с
Окончание замера "Замер_33" - Длительность = 0.774с, Среднее = 0.00000774 с
Окончание замера "Замер_34" - Длительность = 2.359с, Среднее = 0.00002359 с
Выводы
1. Если не менять свойство "Шаблон"/"Pattern", то работает в 3 раза быстрее, чем VBшная.
2. Если не менять свойство "Шаблон"/"Pattern", то работает в 2 раза медленнее чем VBшная.
3. Установка свойства "Шаблон" либо пока реализована криво (очень хотелось бы надеяться что это так
), либо туда "перетекает" куча предварительных действий перед поиском, которые VBшная выполняет при Execute.