Leggendo il codice sorgente scala per scala.concurrent.Future e scala.concurrent.impl.Future, sembra che ogni composizione futura tramite map
invii una nuova attività per un executor. Presumo che questo in genere attivi un interruttore di contesto per il thread corrente e/o un'assegnazione di un thread per il lavoro.Futures e thread Scala
Considerando che i flussi di funzione devono passare attorno a Futures tra di loro per agire sui risultati di Futures senza bloccare (o senza scavare negli spaghetti callback), questo paradigma "reattivo" non è molto caro in pratica, quando il codice è ben scritto in modo modulare dove ogni funzione fa qualcosa di piccolo e passa ad altri?
Sì sì ... ma si suppone che sia "reattivo" e non necessariamente "ottimizzato per le prestazioni". –
L'approccio adottato dalla libreria standard in questo senso è una decisione di progettazione e contrasta con l'implementazione di future su Twitter, che è ottimizzata per l'affinità del thread - si veda ad es. [questo post Finaglers] (https://groups.google.com/d/msg/finaglers/yWOr7-7CmPw/TBsJenqynQQJ) per alcune discussioni. –
Forse @TravisBrown lo avrebbe tagliato/incollato nella casella "La tua risposta". Modulo i suoi standard sono incredibilmente alti. Ma il suo commento è un trattino più lungo del precedente. –