Czy podczas korzystania z kontraktów futures Scala zoptymalizowane zostaną połączenia zwrotne z tym samym kontekstem wykonania w połączeniach synchronicznych?
Nowa Future w Scala 2.10 używa kontekstu wykonania dla każdej operacji, w której akcja jest wywoływana asynchronicznie (w tymmap
, filter
itp.) Czy to oznacza, że każde działanie będzie zawsze wywoływane indywidualnie w kontekście wykonania, czy też jest możliwe, że ten krok zostanie zoptymalizowany przy łączeniu wielu transformacji / filtrów przy użyciu tego samego kontekstu wykonania?
To znaczy. jeśli robiszf.map(...).filter(...).map(...)
, wszystkie z tym samym kontekstem wykonania, to wywołanieexecute()
raz (ponieważ jest wystarczająco sprytny, aby skomponować synchroniczną funkcję z powyższego), czy trzy razy?
Jeśli przyszłość scala nie przeprowadzi powyższej optymalizacji, czy istnieje alternatywna struktura lepiej dostosowana do kompozycji o długich łańcuchach, która robi powyższe?