Tôi có một câu hỏi đơn giản đến nỗi tôi không thể tin rằng mình không thể tự trả lời được. Nhưng, có bạn đi.Sử dụng một mảng tĩnh lớn trong C# (Silverlight trên Windows Phone 7)
Tôi có danh sách tĩnh lớn (của các thành phố, vĩ độ và kinh độ) mà tôi muốn sử dụng trong ứng dụng Silverlight Windows Phone 7 của mình. Có khoảng 10.000 người trong số họ. Tôi muốn nhúng dữ liệu này tĩnh trong ứng dụng của tôi và truy cập nó trong một mảng (tôi cần phải chuyển qua toàn bộ danh sách trong mã khá thường xuyên).
Điều gì sẽ là phương tiện lưu trữ hiệu quả nhất của tôi? Tôi là một chút của một loại trường cũ, vì vậy tôi xem thuộc cách nhanh nhất để làm điều đó sẽ là:
public struct City
{
public string name;
public double lat;
public double lon;
};
và sau đó ...
private City[] cc = new City[10000];
public CityDists()
{
cc[2].name = "Lae, Papua New Guinea"; cc[2].lat = 123; cc[2].lon = 123;
cc[3].name = "Rabaul, Papua New Guinea"; cc[3].lat = 123; cc[3].lon = 123;
cc[4].name = "Angmagssalik, Greenland"; cc[4].lat = 123; cc[4].lon = 123;
cc[5].name = "Angissoq, Greenland"; cc[5].lat = 123; cc[5].lon = 123;
...
Tuy nhiên, bums này ra với một " ra khỏi bộ nhớ "lỗi trước khi mã thực sự được chạy (tôi giả định mã chính nó đã kết thúc được quá nhiều để tải vào bộ nhớ).
Mọi thứ tôi đọc trực tuyến đều yêu cầu tôi sử dụng tài nguyên XML hoặc tệp và sau đó để deserialise vào trường hợp của một lớp. Nhưng điều đó có thể thực sự nhanh như sử dụng cấu trúc không? Liệu XML có mất thời gian để phân tích cú pháp không?
Tôi nghĩ rằng tôi có khả năng viết mã ở đây - Tôi chỉ không chắc cách tiếp cận tốt nhất là bắt đầu bằng. Tôi quan tâm đến tốc độ tải và (quan trọng hơn) thời gian chạy truy cập nhiều hơn bất cứ điều gì.
Bất kỳ sự trợ giúp nào được đánh giá cao - câu hỏi đầu tiên ở đây vì vậy tôi hy vọng tôi đã không làm bất cứ điều gì đầu óc.
Chris
Xin chào Chris, Tổng lượng dữ liệu trong tổng số là bao nhiêu? Bao nhiêu bộ nhớ trên hệ thống của bạn và hoàn toàn miễn phí? Tôi giả sử bạn đang thử nghiệm trên emu. Ngoài ra tò mò nếu bạn không nhớ tôi hỏi những gì nguồn dữ liệu là .. Tôi đã xem xét các tùy chọn cho dữ liệu thành phố quá. –
Để tham chiếu 100k dữ liệu XML đơn giản có thể được tải từ XAP sử dụng XDocument, hiển thị trong hộp danh sách và được lưu vào bộ nhớ riêng biệt trong 0.5 giây trên thiết bị 650Mhz. –
Xin chào Mick - Tôi đang sử dụng dữ liệu đến từ http://www.partow.net/miscellaneous/airportdatabase/index.html. Có một số thứ rác rưởi ở đó mà tôi đã loại bỏ và tôi đã chuyển đổi vĩ độ và kinh độ thành chỉ số - nếu có cách nào đó bạn có thể liên lạc với tôi, tôi rất vui được chia sẻ kết quả cuối cùng (trong bảng tính Excel ngay bây giờ). Tôi sẽ nhìn vào XDocument - nghe có vẻ dễ dàng đủ nhanh cho những gì tôi theo sau! –