Tôi đang tải List<Image>
từ một thư mục có khoảng 250 hình ảnh. Tôi đã so sánh DateTime và mất 11 giây để tải 250 hình ảnh đó. Đó là chậm như địa ngục, và tôi rất muốn tăng tốc độ đó.Đẩy nhanh quá trình tải Danh sách hình ảnh
Hình ảnh trên đĩa cứng cục bộ của tôi, thậm chí không phải hình ảnh bên ngoài.
Mã:
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: yes, tôi cần tất cả các hình ảnh. Điều tôi đang lên kế hoạch là lấy 30 pixelcolums ở giữa và tạo ra một hình ảnh mới. Kinda giống như một bức tranh 360 độ. Chỉ ngay bây giờ, tôi chỉ thử nghiệm với hình ảnh ngẫu nhiên.
Tôi biết có thể có các khuôn khổ tốt hơn để thực hiện việc này, nhưng tôi cần điều này để hoạt động trước tiên.
EDIT2: Chuyển sang đồng hồ bấm giờ, sự khác biệt chỉ là một vài phần nghìn giây. Cũng đã thử nó với Directory.EnumerateFiles, nhưng không có sự khác biệt nào cả.
EDIT3: Tôi đang chạy .NET 4, trên máy khách Win7 32 bit.
Tôi thậm chí sẽ không xem mã. Bất cứ khi nào thực hiện các tiêu chuẩn hiệu suất, không sử dụng DateTime! Thay vào đó, hãy sử dụng đối tượng Đồng hồ bấm giờ. Chúng chính xác và đáng tin cậy hơn nhiều. –
Tôi thường sử dụng Đồng hồ bấm giờ để thực hiện thời gian. Đã tìm thấy trong system.diagnostics. –
Loại tiếp tuyến cho câu hỏi của bạn nhưng để xác định thời gian hoạt động trong mã của bạn [system.diagnostics.stopwatch] (http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx) hoạt động như thế nào tốt hơn rất nhiều. –