我有2个填充Array[Int]的实现,如下所述。第一个执行时间为 84 毫秒,第二个执行速度慢 100 倍:
Execute 'filling via Array.fill' in 84 ms
Execute 'filling via while' in 8334 ms
Run Code Online (Sandbox Code Playgroud)
为什么第二个变体需要 100 倍的时间?它不是 GC,因为我可以在第二次执行时以相同的时间删除第一次执行。我在 Java 11 上运行它,并使用 Scala 3:
.jdks/adopt-openjdk-11.0.11/bin/java ... Fill
Run Code Online (Sandbox Code Playgroud)
更重要的是,如果您打开Array.fill实现,您将通过 while... 看到实现
Execute 'filling via Array.fill' in 84 ms
Execute 'filling via while' in 8334 ms
Run Code Online (Sandbox Code Playgroud)
PS:我在 Scala 2.12 上重复这个测试:
Execute 'filling via Array.fill' in 118 ms
Execute 'filling via while' in 6 ms
Run Code Online (Sandbox Code Playgroud)
Scala 3 中的问题...
PPS:在这种情况下,for (i <- 0 until n)可以正常速度工作,计时与 Scala …
我只是想使用 akka 在 scala 项目中实现一个小示例 REST 端点。代码如下
import akka.http.scaladsl.Http
import akka.http.scaladsl.model.{ContentTypes, HttpEntity}
import akka.actor.typed.ActorSystem
import akka.actor.typed.scaladsl.Behaviors
import scala.io.StdIn
import scala.concurrent.ExecutionContextExecutor
object ViewAPI :
@main def run(): Unit = {
implicit val system = ActorSystem(Behaviors.empty, "my-system")
implicit val executionContext = system.executionContext
val route =
path("hello") {
get {
complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, "<h1>Say hello to akka-http</h1>"))
}
}
val bindingFuture = Http().newServerAt("localhost", 9001).bind(route)
}
Run Code Online (Sandbox Code Playgroud)
我的 sbt 文件如下所示:
libraryDependencies += ("com.typesafe.akka" %% "akka-http" % "10.2.9").cross(CrossVersion.for3Use2_13)
libraryDependencies += "com.typesafe.akka" %% "akka-actor-typed" % "2.6.19"
libraryDependencies += "com.typesafe.akka" …Run Code Online (Sandbox Code Playgroud)