Đây là một câu hỏi học thuật về hiệu suất hơn là thực tế 'tôi nên sử dụng' nhưng tôi tò mò vì tôi không dabble nhiều trong IL ở tất cả để xem những gì được xây dựng và tôi không có một số liệu lớn trên tay để hồ sơ chống lại.Vòng lặp nào nhanh hơn: gọi thuộc tính hai lần hoặc lưu trữ thuộc tính một lần?
Vì vậy, đó là nhanh hơn:
List<myObject> objs = SomeHowGetList();
List<string> strings = new List<string>();
foreach (MyObject o in objs)
{
if (o.Field == "something")
strings.Add(o.Field);
}
hay:
List<myObject> objs = SomeHowGetList();
List<string> strings = new List<string>();
string s;
foreach (MyObject o in objs)
{
s = o.Field;
if (s == "something")
strings.Add(s);
}
Hãy ghi nhớ rằng tôi không thực sự muốn biết tác động hiệu suất của string.Add (s) (như bất cứ thao tác nào cần được thực hiện không thể thay đổi được), chỉ khác biệt hiệu suất giữa việc thiết lập mỗi lần lặp (chúng ta hãy nói rằng s có thể là bất kỳ kiểu hoặc chuỗi nguyên thủy nào) gọi hàm getter trên đối tượng mỗi lần lặp.
Tại sao bạn hỏi _us_? Bạn đã viết mã. Nhận ra một đồng hồ bấm giờ, chạy nó một tỷ lần cả hai cách, và sau đó bạn sẽ biết đó là nhanh hơn. –