Показать сообщение отдельно
  #6 (permalink)  
Старый 01.08.2020, 16:44
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,126

Цитата:
Вот уж вряд ли.
Это ссылка на внешнюю переменную что не позволяет оптимизатору автоматически развернуть цикл.
Более того этот объект изменяется на текущей итерации цикла т.е. пока не закончится текущая итерация и объект не будет изменен следующую/параллельную итерацию интерпретатор выполнять не может так как состояние объекта еще не определенно что работает как брошенный якорь на гоночном автомобиле.
Основной способ оптимизации выполнения это избавление от побочных эффектов при выполнении блока кода или вынос их в отдельный блок кода.
А строки 50, 67 как раз и есть эти побочные эффекты.
Но данные во внешнем изменяемом объекте не пересекаются по этому если в ручную развернуть цикл то это должно дать прибавку к скорости. Хотя оптимизатор наверно и сам может просчитать что данные не пересекаются и ожидать изменения объекта не обязательно.

Последний раз редактировалось MallSerg, 01.08.2020 в 16:49.
Ответить с цитированием