Tôi đã sử dụng Rhino cho một thành phần kịch bản bên trong đồ họa. Trong dự án có khoảng 200 kịch bản nhỏ chạy độc lập. Ngay lập tức khi bắt đầu ứng dụng, các tập lệnh phải ở tốc độ tối đa. Hiệu suất của Rhino là đủ, nhưng kể từ khi Oracle đề nghị chuyển sang Nashorn, tôi đang đối mặt với một sự pha loãng.Có thể khắc phục chậm trễ khởi động Nashorn?
Bên dưới ảnh hiển thị chênh lệch tải giữa Rhino và Nashorn với xấp xỉ 15.000 lần gọi các tập lệnh. Startup slow của Nashorn là vấn đề lớn nhất của tôi.
Lưu ý, điều này đã trở lại trên JDK 1.8.0. JDK 1.8u5 cũng tương tự như
Tôi hy vọng hình ảnh rõ ràng.
Đây là một phác thảo của làm thế nào tôi sử dụng ScriptEngine:
- Tôi đang sử dụng Một ví dụ động cơ kịch bản,
- tôi tạo ra một đối tượng CompiledScript cho mỗi kịch bản,
- một SwingWorker thực hiện một CompiledScript .eval() một lần.
- Nửa giây một lần các SwingWorkers được bắt đầu.
- Mỗi trình biên dịch có một cá thể SimpleScriptContext riêng của nó được sử dụng lại cho mỗi lần thực thi.
Dưới đây tôi đã bao gồm hồ sơ thời gian chạy của động cơ bận như thế nào theo thời gian;
Có ai biết cách khắc phục sự chậm trễ khởi động của Nashorn không?
CẬP NHẬT 15 Tháng 4 '15
Ran cùng một thử nghiệm với 200 kịch bản riêng biệt trên Java8u45.
Hiệu suất tốt hơn nhiều! Chạy nhanh như Rhino trên Java7.
Tê giác dưới Java 1.8 có thể được tiết lộ. –
Cảm ơn, đó sẽ là hy vọng cuối cùng của tôi. Nhân tiện, tôi đọc [ở đây] (https://wiki.openjdk.java.net/display/Nashorn/Using+Rhino+JSR-223+engine+with+JDK8) mà tôi cần một cái lọ được chế tạo thủ công. Bất kỳ ý tưởng tại sao, hoặc nó sẽ chỉ được cho chán nản? – Houtman
Tôi đọc: "Nếu bạn muốn nhận được nhị phân dựng sẵn thay vào đó, bạn có thể tải xuống từ đây:" - do đó, không có vấn đề gì. Nó được biên dịch trong không phải Java 1.8 - vì vậy những gì. –