Możesz obejść czas rozruchu maszyny JVM, otwierając Scala REPL, a następnie ładując skrypty bezpośrednio do niego, używając polecenia :load
. Kompiluje to (zajmuje trochę czasu, ale nie znajduję długo w praktyce) zawartości skryptu i ładuje go do użycia w REPL. Na przykład:
scala> :load testScript.scala
Loading testScript.scala...
import scala.collection.mutable.Map
memory: scala.collection.mutable.Map[Int,Int] = Map()
fib: (Int)Int
res7: Int = 165580141
scala> fib(10)
res1: Int = 55
scala> fib(11)
res2: Int = 89
scala> fib(12)
res3: Int = 144
scala> fib(13)
res4: Int = 233
Na przykład, typowy przebieg pracy podczas pisania różnych prototypów w Scali jest następujący. Mam edytor tekstu otwarty w jednym oknie, a Scala REPL w innym. Piszę swój kod, a następnie go ładuję (:load script.scala
). Wyniki generowane przez skrypt są natychmiast dostępne (jak widać w powyższym transkrypcie, res7
) i dostępne są również wszelkie funkcje, klasy lub obiekty zdefiniowane w skrypcie. Jest szybszy niż uruchomienie scala myScript.scala
, ponieważ JVM jest już załadowana.
Jeśli przejdziesz skompilowaną trasę, użyj fsc
(szybki kompilator Scala). Przy pierwszym wywołaniu tworzy proces demona, który kompiluje kod. Dlatego będziesz musiał zapłacić cenę początkową JVM tylko raz. Zauważ, że jeśli zmienisz wartość CLASSPATH
(zmienna środowiskowa), będziesz musiał ponownie uruchomić fsc
(to jest coś, co mnie przez chwilę podsłuchiwało).
-- Flaviu Cipcigan
Zobacz także http://stackoverflow.com/questions/1491325/how-to-speed-up-java-vm-jvm-startup-time –