0

クラスの初期化はscala.Predef、アプリケーションの予期しない速度低下を引き起こす可能性があり、タイミングが重要な状況 (プログラミング コンテストなど) で問題になる可能性がある、遅延の重い操作です。

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

scala.Predefコードを変更せずに、scala コンパイラまたは VM オプションのみを使用して、アプリケーションの起動時に遅延をオフにして強制的に初期化することはできますか?

4

1 に答える 1

0

いいえ、できません。このように、オブジェクトを呼び出すことでオブジェクトを初期化できます

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

ArrayOpsそれでも、に関与するクラスを初期化していない可能性がありますa.apply。遅延クラス初期化は、JVM のプロパティです。ベンチマークを実行する場合、通常は最初に「ウォームアップ」を実行して、関連するすべてのクラスが最初にロードされるようにするのはそのためです。

于 2014-01-06T17:12:11.373 に答える