Tiêu đề yêu cầu tất cả. Chúng tôi sử dụng các hành động, biểu thức với hành động và gọi lại khá rộng rãi trong mã ngày nay.Hành động có thể thay đổi không xác định, và Funcs được JIT chỉ ra?
JIT có thể tối ưu hóa các cuộc gọi này bằng cách gạch chân chúng không? Đây sẽ là một sự tăng hiệu suất rất lớn, xem xét các mẫu gọi lại, dưới dạng này hay dạng khác được sử dụng với số lượng vô lý ngày nay.
JIT không thể tối ưu hóa hành động có thể không bao giờ thay đổi. Ví dụ: tôi không thấy bất kỳ lý do gì khiến một Hành động hoặc Func, được đánh dấu bằng thuộc tính "chỉ đọc" không được tối ưu hóa.
ví dụ:
readonly Action a;
readonly Action a1;
readonly Action a2;
a =() => {};
a1 =() => { a() };
a2 =() => { a1() };
IS a2 bao giờ được tối ưu hóa ra? Tôi không thấy lý do tại sao nó không nên.
Không có số lượng suy nghĩ mơ ước sẽ nhận được nội dung lambda đó được gạch chân. –
Mặc dù mã không thể được inlined, trình biên dịch C# tối ưu hóa điều này bằng cách lưu trữ bộ nhớ và tái sử dụng nó cho cả hai cuộc gọi. –