Closed leshchenko1979 closed 7 months ago
В потенциале для ускорения можно попытаться параллельно передвигаться по списку сущностей в два потока: с начала списка и с конца, продолжая получать страницы, пока ID в двух потоках не пересекутся. Такой способ, возможно, будет давать двукратное ускорение до тех пор, пока не будет исчерпан пул запросов к серверу и не потребуется включить throttling.
Также можно отдавать результаты по мере получения с сервера генератором, а не списком
Результат тестов разных подходов:
https://github.com/mesilov/bitrix24-php-sdk/blob/2.x/docs%2FRU%2FCore%2FBatch%2Fbatch-read-mode.md
Тесты показывают, что стратегия не получается более быстрой (новый метод в 278 раз медленнее старого).
Причины:
Однако допускаю, что новый метод работает лучше на запросах, возвращающих небольшое количество элементов (до 100, 1-2 страницы).
Стратегия объединяет start=-1, выборку в цикле с сортировкой по ID, где ID > последнего ID из предыдущего запроса и объединение в батч.
Видео: https://youtu.be/UiGgSn7_igg