##// END OF EJS Templates
readmarkers: promote global constants to locals for performance
Matt Mackall -
r23803:2763edab default
parent child Browse files
Show More
@@ -286,42 +286,54 b' def _fm0decodemeta(data):'
286 _fm1metapairsize = _calcsize('BB')
286 _fm1metapairsize = _calcsize('BB')
287
287
288 def _fm1readmarkers(data, off=0):
288 def _fm1readmarkers(data, off=0):
289 # make some global constants local for performance
290 noneflag = _fm1parentnone
291 sha2flag = usingsha256
292 sha1size = _fm1nodesha1size
293 sha2size = _fm1nodesha256size
294 sha1fmt = _fm1nodesha1
295 sha2fmt = _fm1nodesha256
296 metasize = _fm1metapairsize
297 metafmt = _fm1metapair
298 fsize = _fm1fsize
299 unpack = _unpack
300
289 # Loop on markers
301 # Loop on markers
290 stop = len(data) - _fm1fsize
302 stop = len(data) - _fm1fsize
291 ufixed = util.unpacker(_fm1fixed)
303 ufixed = util.unpacker(_fm1fixed)
292 while off <= stop:
304 while off <= stop:
293 # read fixed part
305 # read fixed part
294 o1 = off + _fm1fsize
306 o1 = off + fsize
295 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])
296
308
297 if flags & usingsha256:
309 if flags & sha2flag:
298 # read 0 or more successors
310 # read 0 or more successors
299 o2 = o1 + _fm1nodesha256size * numsuc
311 o2 = o1 + sha2size * numsuc
300 sucs = _unpack(_fm1nodesha256 * numsuc, data[o1:o2])
312 sucs = unpack(sha2fmt * numsuc, data[o1:o2])
301
313
302 # read parents
314 # read parents
303 if numpar == _fm1parentnone:
315 if numpar == noneflag:
304 o3 = o2
316 o3 = o2
305 parents = None
317 parents = None
306 else:
318 else:
307 o3 = o2 + _fm1nodesha256size * numpar
319 o3 = o2 + sha2size * numpar
308 parents = _unpack(_fm1nodesha256 * numpar, data[o2:o3])
320 parents = unpack(sha2fmt * numpar, data[o2:o3])
309 else:
321 else:
310 # read 0 or more successors
322 # read 0 or more successors
311 o2 = o1 + _fm1nodesha1size * numsuc
323 o2 = o1 + sha1size * numsuc
312 sucs = _unpack(_fm1nodesha1 * numsuc, data[o1:o2])
324 sucs = unpack(sha1fmt * numsuc, data[o1:o2])
313
325
314 # read parents
326 # read parents
315 if numpar == _fm1parentnone:
327 if numpar == noneflag:
316 o3 = o2
328 o3 = o2
317 parents = None
329 parents = None
318 else:
330 else:
319 o3 = o2 + _fm1nodesha1size * numpar
331 o3 = o2 + sha1size * numpar
320 parents = _unpack(_fm1nodesha1 * numpar, data[o2:o3])
332 parents = unpack(sha1fmt * numpar, data[o2:o3])
321
333
322 # read metadata
334 # read metadata
323 off = o3 + _fm1metapairsize * nummeta
335 off = o3 + metasize * nummeta
324 metapairsize = _unpack('>' + (_fm1metapair * nummeta), data[o3:off])
336 metapairsize = unpack('>' + (metafmt * nummeta), data[o3:off])
325 metadata = []
337 metadata = []
326 for idx in xrange(0, len(metapairsize), 2):
338 for idx in xrange(0, len(metapairsize), 2):
327 o1 = off + metapairsize[idx]
339 o1 = off + metapairsize[idx]
General Comments 0
You need to be logged in to leave comments. Login now