Mercurial > hg
view hgweb.cgi @ 48225:0cc69017d47f
rhg: stop manifest traversal when no more files are needed
Stopping the traversal early can skip a significant part
of the manifest traversal, to avoid some of its cost.
The worst-case benchmarks are favorable, as well.
Running [hg cat] on the last file in the manifest of
a large repo, I'm seeing a ~4ms improvement (150ms -> 146ms),
so this time is now almost indistinguishable from the
baseline ("brute force") implementation.
Running [hg cat] on ~220 files together with the last file
of the repo is further improved by ~5ms or so.
I suspect the raw performance improvements are caused by splitting
the manifest search and the file data access into separate phases,
instead of interleaving them.
Differential Revision: https://phab.mercurial-scm.org/D11616
author | Arseniy Alekseyev <aalekseyev@janestreet.com> |
---|---|
date | Tue, 05 Oct 2021 15:10:42 +0100 |
parents | c102b704edb5 |
children | d5cd1fd690f3 |
line wrap: on
line source
#!/usr/bin/env python3 # # An example hgweb CGI script, edit as necessary # See also https://mercurial-scm.org/wiki/PublishingRepositories # Path to repo or hgweb config to serve (see 'hg help hgweb') config = b"/path/to/repo/or/config" # Uncomment and adjust if Mercurial is not installed system-wide # (consult "installed modules" path from 'hg debuginstall'): # import sys; sys.path.insert(0, "/path/to/python/lib") # Uncomment to send python tracebacks to the browser if an error occurs: # import cgitb; cgitb.enable() from mercurial import demandimport demandimport.enable() from mercurial.hgweb import hgweb, wsgicgi application = hgweb(config) wsgicgi.launch(application)