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

问题描述 投票:1回答:1

我一直在使用Scala.js编码一个小项目:

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

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

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)时,这特别值得注意。甚至可以注意到,算法的初始化(自从按Start直到看到动画的第一帧为止)花费了1.0.1更长的时间。

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

此行为是否值得期待?由于1.0.1声称可以提供更好的运行时性能,所以我在代码中所做的任何特别的事情都可能造成这种性能损失?

scala.js
1个回答
1
投票

[如果在Firefox上特别值得注意,则可能是默认情况下在1.x中使用ES 2015。尽管使用ES 2015可以极大地减少代码大小并改善调试体验,但Firefox在ES 2015上的性能并非最佳。

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

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

要添加到项目的settings中。重新测试之前,请确保先reloadclean

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.