2014-01-06 2 views
0

Инициализация класса scala.Predef - это ленивый тяжеловесный режим, который может вызвать неожиданное замедление приложения и станет проблемой в ситуациях, когда вопросы времени (например, конкурсы программирования).Force scala.Predef инициализация при запуске приложения без изменения кода

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

Так я могу отключить это лень и сила scala.Predef инициализации при запуске приложения, используя только SCALA компилятор или параметры виртуальной машины без внесения изменений в код?

+0

Если вам нужен этот уровень оптимизации, возможно, вам не следует кодировать JVM. – wheaties

ответ

0

Нет, вы не можете. Вы можете инициализировать объект, вызвав его, как этого

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

Все еще, вы, вероятно, не инициализированы ArrayOps класса, который участвует в a.apply. Инициализация ленивого класса является свойством JVM. Если вы делаете тесты, именно поэтому вы обычно сначала запускаете «прогрев», чтобы сначала загрузили все задействованные классы.

Смежные вопросы