Bạn có thể làm việc xung quanh thời gian khởi động JVM bằng cách mở Scala REPL và sau đó tải tập lệnh của bạn trực tiếp vào nó bằng lệnh :load
. Điều này biên dịch (nó mất một thời gian, nhưng tôi không tìm thấy nó dài trong thực tế) nội dung của kịch bản và tải nó để sử dụng trong REPL. Ví dụ:
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
Ví dụ, một công việc điển hình của tôi khi viết nguyên mẫu khác nhau trong Scala là như sau. Tôi có một trình soạn thảo văn bản mở trong một cửa sổ, và Scala REPL trong một cửa sổ khác. Tôi viết mã của tôi và sau đó tải nó (:load script.scala
). Các kết quả do kịch bản tạo ra có sẵn ngay lập tức (như đã thấy trong bảng điểm trên, res7
) và bất kỳ hàm, lớp hoặc đối tượng nào được xác định trong tập lệnh cũng có sẵn. Và nó nhanh hơn chạy scala myScript.scala
khi JVM đã được tải.
Nếu bạn đi tuyến đường đã biên dịch, hãy sử dụng fsc
(trình biên dịch Scala nhanh). Lần đầu tiên nó được gọi nó tạo ra một quá trình daemon biên dịch mã. Vì vậy, bạn sẽ chỉ phải trả giá khởi điểm JVM một lần. Chỉ cần lưu ý rằng nếu bạn thay đổi giá trị của CLASSPATH
(biến môi trường), bạn sẽ phải khởi động lại fsc
(đó là một cái gì đó đã lỗi tôi một thời gian).
-- Flaviu Cipcigan
Nguồn
2009-08-22 17:59:34
Xem thêm http://stackoverflow.com/questions/1491325/how-to-speed-up-java-vm-jvm-startup-time –