2014-07-15 11 views
6

Tôi muốn biết làm thế nào lớn của một lợi ích lambdas có trong Java 8. Tôi đồng ý rằng nó có thể dễ đọc hơn đôi khi để sử dụng lambdas, nhưng nó có thực sự như vậy của một tác động lớn về phía hiệu suất? Hay nó chủ yếu tập trung vào đường cú pháp? Tôi thích các lớp bên trong vô danh đôi khi; Tôi có thực sự mất nhiều lợi ích khi không sử dụng lambda mọi lúc không?Lambda vs hiệu suất lớp bên trong vô danh: giảm tải trên ClassLoader?

Chỉ lớn? đạt được hiệu suất, có vẻ như với tôi, là chúng ta không thực sự tạo ra các lớp học mà các bộ nạp lớp có để tải khi bắt đầu của chương trình - ví dụ tạo ra nhiều nhiều chủ đề:

Thread t = new Thread(new Runnable() { 
    public..... 
}); 

tạo ra các lớp học như Sample$1.class .

Ngoài ra, có hiệu suất hoặc lợi ích ẩn khác ngoài khả năng đọc hoặc khả năng bảo trì, v.v. của mã không? Ẩn ở đâu đó trong JVM? Tôi đã nhìn thấy câu hỏi tương tự với điều này nhưng hầu hết trong số họ đã được tập trung vào mặt trực quan; Tôi không quan tâm đến điều đó. Câu hỏi đặt ra là tò mò sau khi xem Java 8 Lambdas Hacking với Venkat Subramaniam.

Trả lời

6

Sau khi đọc PDF liên kết từ @Brett Okken tôi tin rằng những điều sau đây giữ:

  • lớp Inner có một buổi biểu diễn hơi chậm trên sử dụng đầu tiên, nhưng có vẻ như negliable.
  • Lambdas có hiệu suất chậm hơn khi được gọi thường xuyên do ngăn xếp lớn hơn mà chúng tích tụ khi được gọi.

Tôi sẽ gắn bó với những điều sau đây:

  • Sử dụng Lambdas để có thể đọc khi một vài mili giây mất hiệu suất không phải là một vấn đề (GUI thứ, vv)
  • Sử dụng các lớp bên trong cho thường được gọi là, hiệu suất chức năng quan trọng.
Các vấn đề liên quan