Рубрики
1С: Предприятие 8.х Быстродействие

Разница в скорости кода 1Сv8 между Попытка – Исключение и поиском не цифр в строке (что тоже медленно)

Функция Вариант1_ТолькоЦифры(СтрокаПроверки)

	ЕстьНеЦифры = Ложь;
	
	СтрокаПроверки = СокрЛП(СтрокаПроверки);
	Длина = СтрДлина(СтрокаПроверки);
	
	Для а = 1 По Длина Цикл
		Если Найти("0123456789", Сред(СтрокаПроверки, а, 1)) = 0 Тогда
            ЕстьНеЦифры = Истина;
            Прервать;
		КонецЕсли; 
	КонецЦикла;
    
    Возврат Не ЕстьНеЦифры;
КонецФункции

Функция Вариант2_Попытка(СтрокаПроверки)
    Попытка
	    СтрокаЧислом = Число(СтрокаПроверки);
        Возврат Истина;
    Исключение
        Возврат Ложь;
    КонецПопытки;
КонецФункции

Функция Тест(ФункцияТеста)
    
    КолПовторов = 1000;
    
    ДанныеДляПроверки = "10%";
    
    ВремяНачала = ТекущаяДата();
    Сообщить("Начало теста " + ФункцияТеста + ": " + ВремяНачала);
    СтрокаКода = ФункцияТеста + "(ДанныеДляПроверки)";
    Для а = 0 По КолПовторов Цикл
        Результат = Вычислить(СтрокаКода);
        Если Результат = Истина Тогда
            ЧислоИзСтроки = Число(ДанныеДляПроверки);
        КонецЕсли;
    КонецЦикла;
    ВремяКонца = ТекущаяДата();
    Сообщить("Конец теста: " + ВремяКонца);
    
    Сообщить("Время теста: " + Строка(ВремяКонца - ВремяНачала) + " с");
    
КонецФункции

Процедура НаборТестов() Экспорт
    
    Тест("Вариант1_ТолькоЦифры");
    Тест("Вариант2_Попытка");
КонецПроцедуры

результаты для 100 000 проверок

Начало теста Вариант1_ТолькоЦифры: 10.04.2020 11:12:35
Конец теста: 10.04.2020 11:12:46
Время теста: 11 с
Начало теста Вариант2_Попытка: 10.04.2020 11:12:46
Конец теста: 10.04.2020 11:12:59
Время теста: 13 с

Результат:

Попытка Исключение медленнее на 20%

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.