Scala.js 1.0.1 生成的代码比 0.6.32 慢

Scala.js code produced by 1.0.1 slower than 0.6.32

我一直在使用 Scala.js:

编写一个小项目

https://github.com/ppgllrd/Algorithms.scalaJS.InfectiousDiseaseSimulator

我注意到 1.0.1 编译器生成的 Javascript 结果比 0.6.32 生成的慢得多。它们都可以在以下位置访问:

https://ppgllrd.github.io/Algorithms.scalaJS.InfectiousDiseaseSimulator/0.6.32/

https://ppgllrd.github.io/Algorithms.scalaJS.InfectiousDiseaseSimulator/1.0.1/

我的动画 运行 1.0.1 变慢了。当我使用 Firefox 并将 population size 参数设置为更高的设置 (1500) 时,这一点尤为明显。人们甚至可以注意到 1.0.1 的算法初始化(因为您按 Start 直到看到第一帧动画)需要更长的时间。

我以完全相同的方式编译了两个版本(使用 Scala 2.13.1),唯一的区别是在我的 plugins.sbt 中使用 addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.32")addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.0.1")

这种行为是否符合预期?由于 1.0.1 声称提供更好的 运行 时间性能,我在我的代码中是否有任何特别的事情可能导致这种性能损失?

如果在 Firefox 上特别明显,可能是 1.x 默认使用 ES 2015。 Firefox 的 ES 2015 性能不是最佳,尽管使用 ES 2015 可以大大减少代码大小并改善调试体验。

您可以使用以下 sbt 设置强制 Scala.js 1.x 发出 ES 5.1(如 Scala.js 0.6.x):

scalaJSLinkerConfig ~= { _.withESFeatures(_.withUseECMAScript2015(false)) }

将添加到您项目的 settings 中。在重新测试之前确保 reloadclean