Задача
Есть регистр на 200 000 строк, с хранилищем значений, в котором лежит xml файл. Нужно сделать поиск по содержанию в этих файлах.
Делаем пример
Так как у меня есть обработка по загрузке в регистр из файла и при нажатии на кнопку делается 1 запись с уникальной записью.
Пробуем кликером.
Ладно… Это долго…. Поэтому дописываем цикл в коде сохранения
Но так как мы «крутой» прогер и хотим получить результат максимально быстро - пишем код в одну строчку (можно в транзакцию поместить и будет еще быстрее):
Транзакция позволяет множество мелких операций заменять одной крупной, важно понимать, что вызов самой транзакции тоже занимает время. Поэтому если данных немного, можно обойтись и без транзакции, при этом она не должна быть очень большой т.е не забываем делить на оптимальные порции.
Пока читали научпок, у нас уже записи приготовились (а если не прочитали, то читает - загружается 😡)
Делаем тесты в обработке:
- Если написать алгоритм в одну строку (123 523):
- Тот же алгоритм, но в несколько строчек (129 572)
- Если использовать запрос (152 812, из которых 151 563, это взятие данных из хранилища, т.е 1 249 это время работы в запросе)
Если смотреть на форме списка, то, конечно, тут работает быстрее (пишите в комментариях, почему на форме работает быстрее 😇):
1514 – в одну строку
1976 - в несколько строк
2098 – это заполнить строку таблицы значений
3322 – это заполнение и выполнение запроса (3322-2098=1224) т.е в целом подобно работает быстрее
И приходим к выводу:
1) Что в моей задаче лучше использовать СтрНайти
2) Что Подобно работает быстрее
3) Код в строчку работает быстрее. НО лучше прочитайте статью (ведь код выполняется одинаково)
4) Финальный код, на котором остановился я
Буду рад узнать новые методики оптимизации, и на любую активность в комментариях.
Вступайте в нашу телеграмм-группу Инфостарт