Mercurial > hg > mercurial-crew-with-dirclash
view templates/header.tmpl @ 879:953ccddd57bd
dirstate walking optimizations
The repo walking code introduces a number of calls to dirstate.map.copy(),
significantly slowing down the walk on large trees. When a list of
files is passed to the walking code, we should only look at map entries
relevant to the file list passed in.
dirstate.filterfiles() is added to return a subset of the dirstate map.
The subset includes in files passed in, and if one of the files requested
is actually a directory, it includes any files inside that directory tree.
This brings the time for hg diff Makefile down from 1.7s to .3s on
a linux kernel repo.
Also, the diff command was unconditionally calling makewalk, leading
to an extra pass through repo.changes. This patch avoids the call
to makewalk when commands.diff isn't given a list of patterns, cutting
the time for hg diff (with no args) in half.
Index: mine/mercurial/hg.py
===================================================================
author | mason@suse.com |
---|---|
date | Fri, 12 Aug 2005 07:10:21 -0800 |
parents | dbe0ce2ae196 |
children | 2073e5a71008 |
line wrap: on
line source
Content-type: text/html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <style type="text/css"> <!-- a { text-decoration:none; } .parity0 { background-color: #dddddd; } .parity1 { background-color: #eeeeee; } .lineno { width: 60px; color: #aaaaaa; font-size: smaller; } .plusline { color: green; } .minusline { color: red; } .atline { color: purple; } .annotate { font-size: smaller; text-align: right; padding-right: 1em; } .buttons a { background-color: #666666; padding: 2pt; color: white; font-family: sans; font-weight: bold; } .metatag { background-color: #888888; color: white; text-align: right; } /* Common */ pre { margin: 0; } /* Changelog entries */ .changelogEntry { width: 100%; } .changelogEntry th { font-weight: normal; text-align: right; vertical-align: top; width: 15%;} .changelogEntry th.age, .changelogEntry th.firstline { font-weight: bold; } .changelogEntry th.firstline { text-align: left; width: inherit; } /* Tag entries */ #tagEntries { list-style: none; margin: 0; padding: 0; } #tagEntries .tagEntry { list-style: none; margin: 0; padding: 0; } #tagEntries .tagEntry span.node { font-family: monospace; } /* Changeset entry */ #changesetEntry { } #changesetEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; } #changesetEntry th.files, #changesetEntry th.description { vertical-align: top; } /* File diff view */ #filediffEntry { } #filediffEntry th { font-weight: normal; background-color: #888; color: #fff; text-align: right; } --> </style>