# HG changeset patch # User Bryan O'Sullivan # Date 1347649512 25200 # Node ID 39c6e349dfff0c8bc85fbee43ba22bd466c4037c # Parent 57eba8158736f64fa90ba581f47317d47b91037a wireproto: don't audit local paths during stream_out Auditing at this stage is both pointless (paths are already trusted by the local repo) and expensive. Skipping the audits improves stream_out performance by about 15%. diff -r 57eba8158736 -r 39c6e349dfff mercurial/wireproto.py --- a/mercurial/wireproto.py Fri Sep 14 12:04:46 2012 -0700 +++ b/mercurial/wireproto.py Fri Sep 14 12:05:12 2012 -0700 @@ -545,12 +545,20 @@ repo.ui.debug('%d files, %d bytes to transfer\n' % (len(entries), total_bytes)) yield '%d %d\n' % (len(entries), total_bytes) - for name, size in entries: - repo.ui.debug('sending %s (%d bytes)\n' % (name, size)) - # partially encode name over the wire for backwards compat - yield '%s\0%d\n' % (store.encodedir(name), size) - for chunk in util.filechunkiter(repo.sopener(name), limit=size): - yield chunk + + sopener = repo.sopener + oldaudit = sopener.mustaudit + sopener.mustaudit = False + + try: + for name, size in entries: + repo.ui.debug('sending %s (%d bytes)\n' % (name, size)) + # partially encode name over the wire for backwards compat + yield '%s\0%d\n' % (store.encodedir(name), size) + for chunk in util.filechunkiter(sopener(name), limit=size): + yield chunk + finally: + sopener.mustaudit = oldaudit return streamres(streamer(repo, entries, total_bytes))