Commit 196a2b9
committed
Show a large comparison before computing its differences
TextMergeViewer computed the line diff and the token diffs of every change
before the documents were painted, so the editor stayed blank for the whole
comparison. Once both sides together exceed 2000 lines the first comparison
now runs in a follow-up UI event, the same way the re-diff after an edit
already does, and the change highlighting plus the jump to the first
difference follow when it is done.
Smaller inputs are still compared right away: there the diff costs next to
nothing and showing the text and jumping to the first change in two steps
would only flicker. A refresh is never deferred either, because it restores
the cached selection and scroll position which are dropped as soon as the
refresh returns.
Measured on Linux with Xvfb, medians over 15 repetitions, time from
openCompareEditor until the text is visible:
5000 lines, 100 changes: 237ms -> 77ms
5000 lines, 1250 changes: 491ms -> 96ms
50000 lines, 1000 changes: 427ms -> 135ms
Contributes to #27951 parent f1f10bb commit 196a2b9
2 files changed
Lines changed: 127 additions & 29 deletions
File tree
- team
- bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer
- tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests
Lines changed: 78 additions & 29 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
502 | 502 | | |
503 | 503 | | |
504 | 504 | | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
505 | 517 | | |
506 | 518 | | |
507 | 519 | | |
| |||
2103 | 2115 | | |
2104 | 2116 | | |
2105 | 2117 | | |
| 2118 | + | |
| 2119 | + | |
| 2120 | + | |
| 2121 | + | |
| 2122 | + | |
2106 | 2123 | | |
2107 | 2124 | | |
2108 | 2125 | | |
| |||
3211 | 3228 | | |
3212 | 3229 | | |
3213 | 3230 | | |
3214 | | - | |
3215 | | - | |
3216 | | - | |
3217 | | - | |
3218 | | - | |
3219 | | - | |
3220 | | - | |
3221 | | - | |
3222 | | - | |
3223 | | - | |
3224 | | - | |
3225 | | - | |
3226 | | - | |
3227 | | - | |
3228 | | - | |
3229 | | - | |
| 3231 | + | |
| 3232 | + | |
| 3233 | + | |
| 3234 | + | |
| 3235 | + | |
| 3236 | + | |
| 3237 | + | |
| 3238 | + | |
| 3239 | + | |
| 3240 | + | |
| 3241 | + | |
3230 | 3242 | | |
3231 | 3243 | | |
3232 | | - | |
3233 | | - | |
3234 | | - | |
3235 | | - | |
3236 | | - | |
3237 | | - | |
3238 | | - | |
3239 | | - | |
3240 | | - | |
3241 | | - | |
3242 | | - | |
3243 | | - | |
3244 | | - | |
| 3244 | + | |
3245 | 3245 | | |
3246 | 3246 | | |
| 3247 | + | |
3247 | 3248 | | |
3248 | 3249 | | |
| 3250 | + | |
| 3251 | + | |
| 3252 | + | |
| 3253 | + | |
| 3254 | + | |
| 3255 | + | |
| 3256 | + | |
| 3257 | + | |
| 3258 | + | |
| 3259 | + | |
| 3260 | + | |
| 3261 | + | |
| 3262 | + | |
| 3263 | + | |
| 3264 | + | |
| 3265 | + | |
| 3266 | + | |
| 3267 | + | |
| 3268 | + | |
| 3269 | + | |
| 3270 | + | |
| 3271 | + | |
| 3272 | + | |
| 3273 | + | |
| 3274 | + | |
| 3275 | + | |
| 3276 | + | |
| 3277 | + | |
| 3278 | + | |
| 3279 | + | |
| 3280 | + | |
| 3281 | + | |
| 3282 | + | |
| 3283 | + | |
| 3284 | + | |
| 3285 | + | |
| 3286 | + | |
| 3287 | + | |
| 3288 | + | |
| 3289 | + | |
| 3290 | + | |
| 3291 | + | |
| 3292 | + | |
| 3293 | + | |
| 3294 | + | |
| 3295 | + | |
| 3296 | + | |
| 3297 | + | |
3249 | 3298 | | |
3250 | 3299 | | |
3251 | 3300 | | |
| |||
Lines changed: 49 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
459 | 459 | | |
460 | 460 | | |
461 | 461 | | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
462 | 511 | | |
463 | 512 | | |
464 | 513 | | |
| |||
0 commit comments