Оптимизация selective receive в Erlang (OTP-8623) - Joyfolk
окт. 15, 2014
05:05 pm - Оптимизация 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 тоже ломает оптимизацию.
+79258020581