Tôi muốn kết hợp dữ liệu tùy chỉnh với một Loại và truy xuất dữ liệu đó trong thời gian chạy, nhanh chóng.Cách hiệu quả nhất để kết hợp thông tin với đối tượng 'Loại' trong .Net là gì?
Đây chỉ là trí tưởng tượng của tôi, của thế giới hoàn hảo của tôi:
var MyInfo = typeof (MyClass) .GetMyInformation();
điều này sẽ rất nhanh ... tất nhiên điều này không tồn tại! Nếu nó đã làm tôi sẽ không được yêu cầu. hehe;)
Đây là cách sử dụng thuộc tính tùy chỉnh:
var MyInfo = typeof (MyClass) .GetCustomAttribute ("MyInformation");
này là chậm vì nó đòi hỏi một tra cứu của chuỗi "MyInformation"
Đây là một cách sử dụng một từ điển < Type, MyInformation>:
var MyInfo = myInformationDictionary [ typeof (MyClass)];
Điều này cũng chậm vì đây vẫn là tra cứu 'typeof (MyClass)'.
Tôi biết rằng từ điển rất nhanh, nhưng điều này là không đủ ... nó không phải là nhanh như gọi một phương pháp. Nó thậm chí không phải là cùng một thứ tự tốc độ.
Tôi không nói rằng tôi muốn nó nhanh như cuộc gọi phương thức. Tôi muốn kết hợp thông tin với một loại và truy cập thông tin càng nhanh càng tốt. Tôi đang hỏi liệu có một cách tốt hơn hay là một cách tốt nhất để làm điều đó.
Bất kỳ ý tưởng nào ??
Cảm ơn!
EDIT:
Các typeof (MyClass) tôi đã đề cập trong tất cả các đoạn trước, là biến actualy ... Tôi không biết rằng nó là một loại MyClass cụ thể, nó có thể là bất kỳ loại:
Nhập myType = typeFromSomewhere;
tức là MyClass trong trường hợp này chỉ nói rằng lớp học được tạo bởi tôi và bất kỳ loại nào khác có thể xảy ra trong trường hợp này cũng do tôi ...nên nó đọc
typeof (Một trong lớp My Own, mà tôi không biết phù thủy một là nó, nhưng nó là của tôi chắc chắn)
EDIT: KẾT LUẬN
Một số kết quả hiệu suất liên quan đến từ điển:
Dic.buckets | Dic.Count | Dic.Key | Ops(x17)/s | Avg.Time | Min.Time | Max.Time
-----------------------------------------------------------------------------
17519 | 12467 | Type | 1051538 | 0.95μs | 0.86μs | 0.42ms
919 | 912 | Type | 814862 | 1.23μs | 1.14μs | 0.46ms
1162687 | 912 | Type | 1126382 | 0.89μs | 0.81μs | 0.33ms
919 | 912 | Type | 806992 | 1.24μs | 1.16μs | 0.21ms
17 | 17 | Type | 872485 | 1.15μs | 1.06μs | 0.31ms
-----------------------------------------------------------------------------
36353 | 18160 | String | 227520 | 4.40μs | 3.98μs | 0.47ms
919 | 911 | String | 219159 | 4.57μs | 4.14μs | 0.29ms
1162687 | 911 | String | 236384 | 4.23μs | 3.82μs | 0.41ms
919 | 911 | String | 223042 | 4.49μs | 4.10μs | 0.43ms
17 | 17 | String | 229985 | 4.35μs | 3.94μs | 0.28ms
Giao diện C tất cả:
ops(x17)/s: 2896001
Average: 0.35μs
Min: 0.34μs
Max: 1.20μs
Gọi ảo:
ops(x17)/s: 3115254
Average: 0.32μs
Min: 0.32μs
Max: 0.65μs
tôi thấy rằng tôi có Từ điển dưới ước !!! =)
Dường như từ điển loại cho mọi thứ chậm hơn từ 3 đến 4 lần so với cuộc gọi phương thức ảo.
Đây không phải là trường hợp sử dụng Từ điển chuỗi. Những thứ đó chậm hơn từ 10 đến 12 lần so với cuộc gọi phương thức ảo.
Vì vậy, tôi đã yêu cầu tôi sai!
Và, KHÔNG TÔI KHÔNG LÀM MISSILE !!! ai đó đã giả định điều này trong một bình luận dưới đây =)
Cảm ơn tất cả mọi người.
Nếu hiệu suất là trái tim của vấn đề này xin vui lòng gửi yêu cầu hiệu suất cứng (ví dụ: số lượng tối thiểu là lặp đi lặp lại mỗi giây) mà giải pháp sẽ được đánh giá. –
Tôi rất muốn biết loại chương trình siêu bạn đang viết có hiệu quả như vậy mà một từ điển được coi là quá chậm. Nó phải giống như một tên lửa hoặc thứ gì đó phải thực hiện hàng triệu phép tính một giây bằng cách sử dụng dữ liệu này. –
Bạn có thực sự triển khai và đo các thuộc tính hoặc từ điển đó "quá chậm" không? Trừ khi từ điển của bạn chứa một số lượng rất lớn các mục tôi nghi ngờ rằng bạn sẽ chạy vào các vấn đề hiệu suất. –