Mam pytanie, które jest tak proste, że nie mogę uwierzyć, że nie potrafię na nie odpowiedzieć. Ale proszę.Używanie dużej tablicy statycznej w języku C# (Silverlight na Windows Phone 7)
Mam dużą listę statyczną (miast, szerokości i długości geograficznej), którą chcę użyć w mojej aplikacji Windows Phone 7 Silverlight. Jest ich około 10 000. Chciałbym statycznie osadzić te dane w mojej aplikacji i uzyskać do niej dostęp w postaci tablicy (muszę cyklicznie przeglądać całą listę w kodzie).
Co będzie moim najskuteczniejszym sposobem przechowywania tego? Jestem trochę starej szkoły rodzaju, więc liczyć najszybszą drogę do zrobienia byłoby:
public struct City
{
public string name;
public double lat;
public double lon;
};
a potem ...
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;
...
Jednak to włóczędzy się z " out of memory "Błąd zanim kod faktycznie zostanie uruchomiony (zakładam, że sam kod zakończył się zbyt dużym obciążeniem pamięci).
Wszystko, co czytam w Internecie, informuje mnie, że należy użyć zasobu lub pliku XML, a następnie przekształcić go w instancje klasy. Ale czy to naprawdę może być tak szybkie, jak użycie struktury? Czy XML nie będzie analizował wieku?
Myślę, że jestem w stanie napisać kod tutaj - po prostu nie jestem pewien, od czego najlepiej zacząć. Interesuje mnie szybkość ładowania i (co ważniejsze) dostęp do czasu pracy bardziej niż cokolwiek innego.
Każda pomoc bardzo doceniona - pierwsze pytanie tutaj, więc mam nadzieję, że nie zrobiłem nic z kościołem.
Chris
Witaj Chris, jaka objętość danych w sumie? Ile pamięci w systemie i jest dużo za darmo? Zakładam, że testujesz na emu. Ciekawe, że nie przeszkadza mi, że pytam, jakie jest źródło danych. Szukałem również opcji dla danych miejskich. –
Dla odniesienia 100k prostych danych XML można załadować z XAP za pomocą XDocument, wyświetlonych w polu listy i zapisanych w odizolowanym magazynie w ciągu 0,5 sekundy na urządzeniu 650MHz. –
Hi Mick - Korzystam z danych pochodzących z http://www.partow.net/miscellaneous/airportdatabase/index.html. Jest tam trochę śmieci, które usunąłem i przekonwertowałem szerokość i długość geograficzną na metrykę - jeśli jest jakiś sposób, aby się ze mną skontaktować, chętnie podzielę się końcowym wynikiem (jest to arkusz kalkulacyjny Excela teraz). Zajrzę do XDocument - to brzmi łatwo wystarczająco szybko, na co czekam! –