Still why didn&#x27;t you did that:<p><pre><code>    import scala.concurrent.duration.Duration
    import scala.concurrent.{Await, Future}
    import scala.concurrent.ExecutionContext.Implicits.global

    object FutureGen {

      def caller(num: Int, size: Int, div: Int): Future[Long] = {
        if (size == 1) {
          Future.successful(num.toLong)
        } else {
          val futures = for (i &lt;- 0 until div) yield caller(num + i * (size &#x2F; div), size &#x2F; div, div)
          Future.sequence(futures).map(_.sum)
        }
      }

    }


    object Root extends App {
      &#x2F;&#x2F; Warmup
      Await.result(FutureGen.caller(0, 1000000, 10), Duration.Inf)

      val startTime = System.currentTimeMillis()
      val x: Long = Await.result(FutureGen.caller(0, 1000000, 10), Duration.Inf)
      val diffMs = System.currentTimeMillis() - startTime

      println(s&quot;Result: $x in $diffMs ms.&quot;)
    }
</code></pre>
This would give Scala: 499ms and Go: 436ms which is pretty neat, since go actually has no type system. (And I&#x27;m using the global execution context, which could also be changed) Currently your akka version is slow, since it&#x27;s creating a new class on every call, so you would have like a dozen more methods to dispatch than my version.