Nếu bạn lo lắng về hiệu suất, hãy chạy một hồ sơ. Sau đó, mã thay đổi. Cơ hội là bạn sẽ không bao giờ trong một triệu năm đoán chính xác 100% thời gian. Bạn có thể thay đổi thời gian 0,02%, và để lại phương pháp đóng góp 62% gánh nặng. Bạn cũng có thể làm cho nó tồi tệ hơn. Nếu không có một hồ sơ và bằng chứng, bạn bị mù.
Bạn không có thể giả định rằng JIT sẽ inline một getter tài sản. Có nhiều lý do có thể hoặc không thể làm như vậy; kích thước của thân phương thức, giá trị ảo, giá trị so với loại tham chiếu, kiến trúc, trình gỡ lỗi đính kèm, v.v.
"Hoisting" vẫn có vị trí, và vẫn có thể tiết kiệm được một lần trong vòng lặp chặt chẽ; ví dụ:
var count = list.Count;
for(int i = 0 ; i < count ; i++) {...}
(quên for
vs foreach
cuộc tranh luận fr trên - đây là một cuộc thảo luận trực giao). Ở trên, "Palăng" sẽ giúp hiệu suất. Nhưng chỉ để được thực sự khó hiểu - với mảng, nó là đối diện, và nó là hiệu quả hơn để không Palăng nó:
for(int i = 0 ; i < arr.Length ; i++) {...}
Các JIT nhận này và loại bỏ việc kiểm tra giới hạn (như mảng được cố định kích thước).
Nguồn
2009-03-16 14:38:37
Tôi không biết về điều cuối cùng! Rất vui được biết, cảm ơn! – Groo
Cảm ơn thông tin, nhưng tôi hỏi về một tài liệu tham khảo tốt cho thông tin này –
Quan điểm của tôi là tham chiếu * no * sẽ thực sự giúp bạn với điều này. Một ** profiler ** sẽ. –