Tôi vẽ rất nhiều dòng trên một khung hình dài (nghĩ sơ đồ) và điều chỉnh khá tốt cho hiệu suất, sử dụng các lớp hình học cấp thấp và đóng băng chúng, v.v. Hiệu suất được cải thiện đáng kể, nhưng vẫn mất vài giây để tải một vài nghìn mục vào khung vẽ. Tôi chạy một phân tích hiệu suất trên ứng dụng, và có vẻ như một tỷ lệ lớn thời gian được thực hiện bởi mỗi cuộc gọi đến canvas.children.add()
. Tôi đã đọc rằng đây nên là một cuộc gọi nhẹ, và vì tôi đang gọi nó nhiều lần trong một phương pháp, nó không nên cố gắng để làm bất cứ điều gì nặng nề inbetween ... Có thể có thể có bất kỳ lý do khác này có thể được dùng quá nhiều thời gian? Và bất kỳ cách nào tôi có thể tăng tốc nó?Hiệu suất canvas WPF- children.add được gọi nhiều lần
Hiệu suất không phải là khủng khiếp, nhưng tôi lo sợ nó có thể trở thành vấn đề sau này khi tôi cần xử lý các tập dữ liệu lớn hơn.
Chỉ để tham khảo, có vẻ như nó được gọi là 1400 lần trong mẫu này và mất gần 3 giây thời gian CPU trên một máy tính xách tay hiện đại/nhanh.
Canvas được chứa trong một loạt các điều khiển khác, vì vậy tôi rất tò mò nếu chúng có thể đóng góp cho điều này.
Lưu ý bổ sung: Tôi cũng không đặt chiều cao cụ thể trên canvas, vì nó được đặt để lấp đầy vùng chứa mẹ của lưới. Đây có phải là một nguồn của các vấn đề?
Theo như hiệu suất có liên quan, Bạn có thể thử http : //msdn.microsoft.com/en-us/library/system.windows.media.streamgeometry.aspx Hình học luồng là cấu trúc trọng lượng nhẹ nhất so với bối cảnh vẽ. –
yep, đã sử dụng hình học luồng và có kết quả tốt. cảm ơn –