Mercurial > public > mercurial-scm > hg
comparison mercurial/obsolete.py @ 23804:e880036719e3
readmarkers: fast-path single successors and parents
This gives about a 5% performance bump.
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sun, 11 Jan 2015 16:37:57 -0600 |
parents | 2763edaba857 |
children | 345042e024dc |
comparison
equal
deleted
inserted
replaced
23803:2763edaba857 | 23804:e880036719e3 |
---|---|
306 o1 = off + fsize | 306 o1 = off + fsize |
307 t, secs, tz, flags, numsuc, numpar, nummeta, prec = ufixed(data[off:o1]) | 307 t, secs, tz, flags, numsuc, numpar, nummeta, prec = ufixed(data[off:o1]) |
308 | 308 |
309 if flags & sha2flag: | 309 if flags & sha2flag: |
310 # read 0 or more successors | 310 # read 0 or more successors |
311 o2 = o1 + sha2size * numsuc | 311 if numsuc == 1: |
312 sucs = unpack(sha2fmt * numsuc, data[o1:o2]) | 312 o2 = o1 + sha2size |
313 sucs = (data[o1:o2],) | |
314 else: | |
315 o2 = o1 + sha2size * numsuc | |
316 sucs = unpack(sha2fmt * numsuc, data[o1:o2]) | |
313 | 317 |
314 # read parents | 318 # read parents |
315 if numpar == noneflag: | 319 if numpar == noneflag: |
316 o3 = o2 | 320 o3 = o2 |
317 parents = None | 321 parents = None |
322 elif numpar == 1: | |
323 o3 = o2 + sha2size | |
324 parents = (data[o2:o3],) | |
318 else: | 325 else: |
319 o3 = o2 + sha2size * numpar | 326 o3 = o2 + sha2size * numpar |
320 parents = unpack(sha2fmt * numpar, data[o2:o3]) | 327 parents = unpack(sha2fmt * numpar, data[o2:o3]) |
321 else: | 328 else: |
322 # read 0 or more successors | 329 # read 0 or more successors |
323 o2 = o1 + sha1size * numsuc | 330 if numsuc == 1: |
324 sucs = unpack(sha1fmt * numsuc, data[o1:o2]) | 331 o2 = o1 + sha1size |
332 sucs = (data[o1:o2],) | |
333 else: | |
334 o2 = o1 + sha1size * numsuc | |
335 sucs = unpack(sha1fmt * numsuc, data[o1:o2]) | |
325 | 336 |
326 # read parents | 337 # read parents |
327 if numpar == noneflag: | 338 if numpar == noneflag: |
328 o3 = o2 | 339 o3 = o2 |
329 parents = None | 340 parents = None |
341 elif numpar == 1: | |
342 o3 = o2 + sha1size | |
343 parents = (data[o2:o3],) | |
330 else: | 344 else: |
331 o3 = o2 + sha1size * numpar | 345 o3 = o2 + sha1size * numpar |
332 parents = unpack(sha1fmt * numpar, data[o2:o3]) | 346 parents = unpack(sha1fmt * numpar, data[o2:o3]) |
333 | 347 |
334 # read metadata | 348 # read metadata |