【问题标题】:Force scala.Predef initialization on application start without affecting the code在应用程序启动时强制 scala.Predef 初始化而不影响代码
【发布时间】:2014-01-06 14:05:02
【问题描述】:

scala.Predef 类的初始化是懒惰的重量级操作,可能会导致应用程序意外减速,并且在时间很重要的情况下(如编程竞赛)会成为麻烦。

val a = new Array[Integer](10)
a(5) = 3 //slowdown on this line

那么我可以关闭它的惰性并在应用程序启动时强制scala.Predef 初始化,仅使用 scala 编译器或 VM 选项而不更改代码?

【问题讨论】:

  • 如果您需要这种级别的优化,也许您不应该在 JVM 上编码。

标签: java scala static-initialization predef


【解决方案1】:

不,你不能。你可以通过调用它来初始化一个对象,像这样

Predef    // ensures the body of Predef is initialized
val a = new Array[Integer](10)
a(5) = 3

不过,您可能还没有初始化a.apply 中涉及的ArrayOps 类。延迟类初始化是 JVM 的一个属性。如果您进行基准测试,这就是为什么您通常先对其进行“预热”运行,以便首先加载所有涉及的类。

【讨论】:

    猜你喜欢
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    相关资源
    最近更新 更多