Gần đây tôi đã phải làm một số công cụ xử lý rất nặng với dữ liệu được lưu trữ trong một DataSet. Đủ lớn đến mức tôi đã sử dụng một công cụ để giúp xác định một số tắc nghẽn trong mã của tôi. Khi tôi đang phân tích các nút cổ chai, tôi nhận thấy rằng mặc dù việc tra cứu số liệu không quá chậm (chúng không phải là nút cổ chai), nhưng nó chậm hơn tôi mong đợi. Tôi luôn luôn giả định rằng DataSets sử dụng một số loại thực hiện phong cách HashTable mà sẽ làm cho tra cứu O (1) (hoặc ít nhất thats những gì tôi nghĩ HashTables được). Tốc độ tra cứu của tôi dường như chậm hơn đáng kể so với điều này.Tốc độ của DataSet hàng/cột tra cứu?
Tôi đã tự hỏi liệu có ai biết bất kỳ điều gì về việc triển khai lớp DataSet của .NET hay không sẽ chia sẻ những gì họ biết.
Nếu tôi làm điều gì đó như thế này:
DataTable dt = new DataTable();
if(dt.Columns.Contains("SomeColumn"))
{
object o = dt.Rows[0]["SomeColumn"];
}
Nhanh như thế nào sẽ là thời gian tra cứu được cho phương pháp Contains(...)
, và để lấy giá trị để lưu trữ trong Object o
? Tôi đã có thể nghĩ rằng nó rất nhanh như một HashTable (giả sử những gì tôi hiểu về HashTables là chính xác) nhưng nó không có vẻ như ...
Tôi đã viết mã đó từ bộ nhớ để một số thứ có thể không phải là "cú pháp chính xác".
Đó sẽ là O (n^2) vì bạn đang so sánh chuỗi trên từng mục. –