Новое будущее в Scala 2.10 использует контекст выполнения для каждой операции, где действие называется асинхронно (включая map
, filter
и т.д.). Означает ли это, что каждое действие всегда будет вызываться индивидуально через контекст выполнения или возможно, что этот шаг оптимизируется при объединении нескольких преобразований/фильтров, каждый из которых использует один и тот же контекст выполнения?
т.е. если делать f.map(...).filter(...).map(...)
, все с одним и тем же контекстом выполнения, будет ли этот вызов execute()
один раз (потому что он достаточно умен, чтобы создать синхронную функцию из выше) или три раза?
Если будущее Scala не выполняет вышеуказанную оптимизацию, существует ли альтернативная структура, более подходящая для композиций с длинными цепочками, которые делают выше?