Current 'annotate' breakdown: NEWS builtins.py 6.564 2.265 overall time 0.164 0.038 resolve heads() etc on annotated lines 2.103 0.841 extract texts, convert delta to left-matching-block 4.289 1.382 compute annotations 3.533 1.101 get_matching_blocks() (left and right parents) 0.704 0.180 update left-hand parent annotations (includes above) 3.251 1.068 update right-hand parents 0.118 0.030 resolve annotation lines
So by percentage, 54% of the time is in PatienceSequenceMatcher, 32% of the time is extracting texts, and only 14% of the time is in the annotation work.