Estoy cargando un List<Image>
desde una carpeta de aproximadamente 250 imágenes. Hice una comparación DateTime y lleva 11 segundos completos para cargar esas 250 imágenes. Eso es lento como el infierno, y me gustaría acelerarlo.Acelerando la carga de una Lista de imágenes
Las imágenes están en mi disco duro local, ni siquiera en uno externo.
El código:
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í, necesito todas las imágenes. Lo que estoy planeando es tomar el centro de 30 píxeles de cada uno y hacer una nueva imagen de eso. Un poco como una imagen de 360 grados. Solo ahora, solo estoy probando con imágenes aleatorias.
Sé que hay probablemente mejores marcos para hacerlo, pero necesito que esto funcione primero.
EDIT2: Cambiado a un cronómetro, la diferencia es solo unos pocos milisegundos. También lo intenté con Directory.EnumerateFiles, pero no hubo ninguna diferencia.
EDIT3: Estoy ejecutando .NET 4, en un cliente Win7 de 32 bits.
Ni siquiera voy a mirar el código todavía. ¡Siempre que haga benchmarks de rendimiento, no use DateTime! Use un objeto Cronómetro en su lugar. Son mucho más precisos y confiables. –
Generalmente usaría un cronómetro para hacer el cronometraje. Encontrado en system.diagnostics. –
Tipo de tangencial a su pregunta, pero para medir el tiempo de duración de las operaciones en su código [system.diagnostics.stopwatch] (http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx) funciona mucho mejor. –