Sto caricando un List<Image>
da una cartella di circa 250 immagini. Ho fatto un confronto DateTime e ci sono voluti ben 11 secondi per caricare quelle 250 immagini. È lento come l'inferno, e mi piacerebbe molto accelerarlo.Accelerazione del caricamento di un elenco di immagini
Le immagini sono sul mio disco rigido locale, nemmeno su quello esterno.
Il codice:
DialogResult dr = imageFolderBrowser.ShowDialog();
if(dr == DialogResult.OK) {
DateTime start = DateTime.Now;
//Get all images in the folder and place them in a List<>
files = Directory.GetFiles(imageFolderBrowser.SelectedPath);
foreach(string file in files) {
sourceImages.Add(Image.FromFile(file));
}
DateTime end = DateTime.Now;
timeLabel.Text = end.Subtract(start).TotalMilliseconds.ToString();
}
EDIT: sì, ho bisogno di tutte le immagini. La cosa che sto pianificando è di prendere il centro di 30 pixel di ciascuna e di farne una nuova immagine. Un po 'come una foto a 360 gradi. Solo adesso, sto solo testando immagini casuali.
So che probabilmente ci sono quadri migliori per fare questo, ma ho bisogno che funzioni prima.
EDIT2: commutato a un cronometro, la differenza è di pochi millisecondi. Anche provato con Directory.EnumerateFiles, ma nessuna differenza.
EDIT3: eseguo .NET 4 su un client Win7 a 32 bit.
Non ho ancora intenzione di guardare il codice ancora. Ogni volta che si eseguono benchmark delle prestazioni, non utilizzare DateTime! Utilizzare invece un oggetto Cronometro. Sono molto più precisi e affidabili. –
Generalmente userei un cronometro per fare i tempi. Trovato in system.diagnostics. –
Tipo di tangente alla tua domanda ma per il tempismo per quanto tempo le operazioni eseguono il tuo codice [system.diagnostics.stopwatch] (http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx) funziona molto meglio. –