【发布时间】:2020-04-04 03:18:20
【问题描述】:
我一直在使用 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 并将人口规模参数设置为更高的设置 (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。您可以尝试在项目的
settings中添加scalaJSLinkerConfig ~= { _.withESFeatures(_.withUseECMAScript2015(false)) },然后添加clean并重新编译,以隔离该因素。 -
感谢您的及时答复。这似乎是问题所在。我已经在ppgllrd.github.io/Algorithms.scalaJS.InfectiousDiseaseSimulator/… 上传了这些设置的结果 Javascript,它运行得更好。
-
我把我的评论变成了答案。
标签: scala.js