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