Details
-
Suggestion
-
Resolution: Fixed
-
None
-
None
Description
WPF is very smart in that you can give it a collection of objects and implement styles to render them to your needs. However it seems that when these collections get very large, their efficiency suffers and particularly in the diff view this can cause performance issues, exacerbated by the fact that WPF always runs in the main thread (so even though we're doing all our work in background threads to avoid stalling the UI, WPF can still cause stalls in the user experience).
Investigate ways to improve this. Virtualisation can help, but has drawbacks too (we have used it in places but have had to use shims to keep things like selections working consistently). A more extreme solution might be to just manually render the diff view instead of using WPF's stylings to do it (quite a bit of work). For the moment the workarounds keep things mostly acceptable (limiting diff size for added/removed/untracked files) but there are edge cases which are noticably slow, like very large diffs caused by line ending conversions or automated tools.
See https://jira.atlassian.com/browse/SRCTREEWIN-310 for one instance of this.
Attachments
Issue Links
- is duplicated by
-
SRCTREEWIN-383 SourceTree Diff View untenably slow with large files
- Closed