scala.Predef
类的初始化是懒惰的重量级操作,可能会导致应用程序出现意外减速,并且在时间安排(如编程竞赛)时会出现问题。
val a = new Array[Integer](10)
a(5) = 3 //slowdown on this line
因此,如果不对代码进行更改,我是否可以仅使用scala编译器或VM选项关闭应用程序启动时的懒惰和强制scala.Predef
初始化?
答案 0 :(得分:0)
不,你不能。你可以通过调用它来初始化一个对象,就像这个
Predef // ensures the body of Predef is initialized
val a = new Array[Integer](10)
a(5) = 3
但是,您可能还没有初始化ArrayOps
中涉及的a.apply
类。延迟类初始化是JVM的一个属性。如果你做基准测试,那就是为什么你通常先给它一个“预热”运行,以便首先加载所有相关的类。