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
中。在重新测试之前确保 reload
和 clean
。
我一直在使用 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
中。在重新测试之前确保 reload
和 clean
。