Tôi chỉ muốn nói thêm rằng bối cảnh có bao nhiêu hồ sơ bạn đang mong đợi đóng một vai trò quan trọng bởi vì nếu bạn đang trở về một hàng duy nhất sau đó khác biệt hiệu suất giữa hai sẽ không đáng kể. Tuy nhiên nếu bạn đang looping qua nhiều hàng thì sử dụng accessor gõ là tốt hơn cho hiệu suất kể từ khi nó được tối ưu hóa. Vì vậy, trong trường hợp đó nếu bạn cần đạt hiệu suất tốt nhất bằng cách sử dụng tên cột thì hãy gọi GetOrdinal một lần, đặt nó vào một biến và sau đó sử dụng trình truy cập đã nhập với cột thứ tự trong vòng lặp của bạn. Điều này sẽ mang lại hiệu suất tốt nhất.
nếu bạn tò mò về sự khác biệt hiệu suất kiểm tra my blog post
Có ai có một ý tưởng về tác động của việc sử dụng hiệu suất GetOrdinal (..) bên trong vòng lặp liên tiếp so với ví dụ như hồi dữ liệu thực tế từ DB? –
Tôi có một thử nghiệm performamce cho một dịch vụ Web API mà đọc khoảng 30-40 bản ghi từ DB được lưu trữ proc (với nhiều resultsets) và trả về Json có kích thước xấp xỉ 8K. Trong bài kiểm tra này, tôi đã thay thế tất cả các hằng số GetOrdinal() thành static int và kết quả là tôi nhận được tăng 2% hiệu suất ... do đó, bạn có nỗ lực tạo ra các loại tên cột như vậy không? - Tôi đoán ở hầu hết các cảnh quan không. Đọc dữ liệu từ DB và dữ liệu serialization đến Json trong thực scenarious sẽ ảnh hưởng đến hiệu suất nhiều hơn, vì vậy tôi nghĩ rằng bộ nhớ đệm của ordinals sẽ là điều cuối cùng để làm khi bạn đã tối ưu hóa mọi thứ khác ... –