Ho una domanda così semplice che non posso credere di non poter rispondere da solo. Ma eccoti.Utilizzo di un array statico di grandi dimensioni in C# (Silverlight su Windows Phone 7)
Ho una lista statica di grandi dimensioni (di città, latitudini e longitudini) che voglio usare nell'applicazione Silverlight di Windows Phone 7. Ce ne sono circa 10.000. Mi piacerebbe incorporare questi dati staticamente nella mia applicazione e accedervi in un array (ho bisogno di scorrere l'intero elenco in codice abbastanza regolarmente).
Quale sarà il mio mezzo più efficace per archiviare questo? Sono un po 'di una vecchia scuola sorta, in modo da calcolai il modo più veloce per farlo sarebbe:
public struct City
{
public string name;
public double lat;
public double lon;
};
e poi ...
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;
...
Tuttavia, questo barboni fuori con una " "Memoria insufficiente" prima che il codice venga effettivamente eseguito (presumo che il codice stesso sia finito per essere caricato troppo in memoria).
Tutto ciò che ho letto online mi dice di usare una risorsa o un file XML e poi di deserializzare ciò in istanze di una classe. Ma può essere davvero veloce come usare una struttura? L'XML non impiegherà secoli per essere analizzato?
Penso di essere in grado di scrivere il codice qui - non sono sicuro di quale sia l'approccio migliore per iniziare. Sono interessato alla velocità di caricamento e (più importante) l'accesso al tempo di esecuzione più di ogni altra cosa.
Qualsiasi aiuto molto apprezzato - prima domanda qui, quindi spero di non aver fatto niente con i capelli.
Chris
Ciao Chris, Quale volume di dati in totale? Quanta memoria è presente sul tuo sistema ed è gratuita? Suppongo che tu stia provando sull'emù. Anche curioso se non ti dispiace che mi chieda quale sia la fonte dei dati. Ho anche esaminato le opzioni per i dati della città. –
Per il riferimento 100k di semplici dati XML possono essere caricati da XAP utilizzando XDocument, visualizzati in una lista e salvati in una memoria isolata in 0,5 secondi su un dispositivo 650Mhz. –
Ciao Mick - Sto usando i dati che provengono da http://www.partow.net/miscellaneous/airportdatabase/index.html. C'è un po 'di spazzatura lì dentro che ho spogliato e ho convertito la latitudine e la longitudine in metrica - se c'è un modo in cui puoi metterti in contatto con me sarei felice di condividere il risultato finale (è in un foglio di calcolo di Excel proprio adesso). Vedrò XDocument - sembra abbastanza veloce per quello che sto cercando! –