Category: it

Category was added automatically. Read all entries about "it".

фото

Оптимизация selective receive в Erlang (OTP-8623)

Это врядли кому-то из моих читателей интересно, но напишу здесь, чтобы самому не забыть.
Результаты маленького исследования условий срабатывания оптимизатора selective receive в эрланге.

Итак оно работает, если:
1. Ref создается в той же области видимости, что и блок receive
2. Все ветки блока receive в шаблонах содержат Ref в явном виде
3. Уровень вложенности и местоположение Ref в шаблоне receive (вроде) не важно - хоть {Ref, ...}, хоть {..., Ref, ...}, хоть {..., {Ref, ...}, ...}, но если сделать X = {Ref, ...} и в receive написать {X, ...}, то оптимизация не сработает‏.

Дизассемблер наше всё )

upd: использование нескольких Ref в одном блоке receive тоже ломает оптимизацию.