mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 23:38:50 +03:00
obsolete: use parsers.fm1readmarker if it exists for a ~38% perf win
This moves perfloadmarkers on my linux workstation (63494 markers from mpm, crew, and myself) performance from ! wall 0.357657 comb 0.360000 user 0.350000 sys 0.010000 (best of 28) to ! wall 0.222345 comb 0.220000 user 0.210000 sys 0.010000 (best of 41) which is a pretty good improvement. On my BSD machine, which is ancient and slow, before: ! wall 3.584964 comb 3.578125 user 3.539062 sys 0.039062 (best of 3) after: ! wall 2.267974 comb 2.265625 user 2.195312 sys 0.070312 (best of 5) I feel like we could do better by moving the whole generator function into C, but I didn't want to tackle that right away.
This commit is contained in:
parent
836f3a16e3
commit
7838bfda1b
@ -68,7 +68,7 @@ comment associated with each format for details.
|
||||
|
||||
"""
|
||||
import struct
|
||||
import util, base85, node
|
||||
import util, base85, node, parsers
|
||||
import phases
|
||||
from i18n import _
|
||||
|
||||
@ -301,6 +301,15 @@ def _fm1readmarkers(data, off):
|
||||
# Loop on markers
|
||||
stop = len(data) - _fm1fsize
|
||||
ufixed = util.unpacker(_fm1fixed)
|
||||
|
||||
fast = getattr(parsers, 'fm1readmarker', None)
|
||||
if fast is not None:
|
||||
while off <= stop:
|
||||
ret = fast(data, off)
|
||||
yield ret[1:]
|
||||
off += ret[0]
|
||||
return
|
||||
|
||||
while off <= stop:
|
||||
# read fixed part
|
||||
o1 = off + fsize
|
||||
|
Loading…
Reference in New Issue
Block a user