2011-09-05 30 views
13

Nếu tôi hiểu chính xác Groovy được nhập động nhưng vì nó gần như là một siêu của Java, thông tin kiểu tĩnh có thể được cung cấp tùy chọn. Điều này có thể hữu ích nếu viết một cái gì đó mà chỉ có một vài phần là hiệu suất quan trọng trong khi tránh ma sát của việc sử dụng nhiều ngôn ngữ. Loại chú thích có thể được cung cấp chỉ cho các phần quan trọng hiệu suất.Groovy kiểu Java nhanh như Java?

Hình phạt hiệu suất khi sử dụng Groovy thay vì Java trong các hàm/lớp nơi tập con giống Java được sử dụng và chú thích kiểu tĩnh được cung cấp là gì?

Trả lời

12

Các loại khai báo trong groovy không tăng tốc độ một cách kỳ diệu. Nó vẫn là mã groovy và cần phải đi qua MOP trong trường hợp một cái gì đó đã thay đổi động. Bạn không nhận được liên kết tĩnh chỉ vì bạn đã cung cấp thông tin loại.

Đối với những điều nhạy cảm về hiệu suất mà mã groovy không đủ nhanh, bạn sẽ cần phải viết mã java thực.

Câu hỏi này rất giống với một số previous one trong đó tôi gave an answer đào sâu vào mã byte được tạo cho biết cách nhập nội dung nào đó không tăng tốc.

+0

Tôi tin rằng câu trả lời này đã lỗi thời vì bây giờ '@ CompileStatic' đã được thêm vào ngôn ngữ Groovy chính. – ArtB

8

Bạn cũng có thể sử dụng Groovy ++. Thả groovypp.jar vào đường dẫn lớp và chú thích một gói, lớp hoặc phương thức bằng @Typed. Mã được chú thích bằng cách chuyển MOP, do đó, nhanh như mã Java.

Và ngay cả khi bạn không khai báo loại, @Typed code sẽ suy ra loại nếu có thể tại thời gian biên dịch.