view mercurial/templates/monoblue/map @ 23497:5817f71c2336

obsstore: disable garbage collection during initialization (issue4456) Python garbage collection is triggered by container creation. So code that creates a lot of tuples tends to trigger GC a lot. We disable the gc during obsolescence marker parsing and associated initialization. This provides an interesting speedup (25%). Load marker function on my 58758 markers repo: before: 0.468247 seconds after: 0.344362 seconds The benefit is a bit less visible overall. With python2.6 on my system I see: after: 0.60 before: 0.53 The difference is probably explained by the delaying of a costly GC. (but there is still a win). Marking involved tuples, lists and dicts as ignorable by the garbage collector should give us more benefit. But this is another adventure. Thanks goes to Siddharth Agarwal for the lead.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Wed, 26 Nov 2014 16:58:31 -0800
parents 0bba1ff2ac7b
children 9e1f4c65f5f5
line wrap: on
line source

default = 'summary'
mimetype = 'text/html; charset={encoding}'
header = header.tmpl
footer = footer.tmpl
search = search.tmpl
changelog = changelog.tmpl
summary = summary.tmpl
error = error.tmpl
notfound = notfound.tmpl

help = help.tmpl
helptopics = helptopics.tmpl

helpentry = '
  <tr><td>
    <a href="{url|urlescape}help/{topic|escape}{sessionvars%urlparameter}">
      {topic|escape}
    </a>
  </td><td>
    {summary|escape}
  </td></tr>'

naventry = '<a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
navshortentry = '<a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
navgraphentry = '<a href="{url|urlescape}graph/{node|short}{sessionvars%urlparameter}">{label|escape}</a> '
filenaventry = '<a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{label|escape}</a>'
filedifflink = '<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a> '
filenodelink = '
  <tr class="parity{parity}">
    <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
    <td></td>
    <td>
      <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
      <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a> |
      <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
      <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
      <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
    </td>
  </tr>'
filenolink = '
  <tr class="parity{parity}">
    <td><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{file|escape}</a></td>
    <td></td>
    <td>
      file |
      annotate |
      <a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a> |
      <a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">comparison</a> |
      <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a>
    </td>
  </tr>'

nav = '{before%naventry} {after%naventry}'
navshort = '{before%navshortentry}{after%navshortentry}'
navgraph = '{before%navgraphentry}{after%navgraphentry}'
filenav = '{before%filenaventry}{after%filenaventry}'

fileellipses = '...'
changelogentry = changelogentry.tmpl
searchentry = changelogentry.tmpl
changeset = changeset.tmpl
manifest = manifest.tmpl
direntry = '
  <tr class="parity{parity}">
    <td>drwxr-xr-x</td>
    <td></td>
    <td></td>
    <td><a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
    <td><a href="{url|urlescape}file/{node|short}{path|urlescape}{sessionvars%urlparameter}">files</a></td>
  </tr>'
fileentry = '
  <tr class="parity{parity}">
    <td>{permissions|permissions}</td>
    <td>{date|isodate}</td>
    <td>{size}</td>
    <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{basename|escape}</a></td>
    <td>
      <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a> |
      <a href="{url|urlescape}log/{node|short}/{file|urlescape}{sessionvars%urlparameter}">revisions</a> |
      <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
    </td>
  </tr>'
filerevision = filerevision.tmpl
fileannotate = fileannotate.tmpl
filediff = filediff.tmpl
filecomparison = filecomparison.tmpl
filelog = filelog.tmpl
fileline = '
  <div style="font-family:monospace" class="parity{parity}">
    <pre><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</pre>
  </div>'
annotateline = '
  <tr class="parity{parity}">
    <td class="linenr">
      <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}#l{targetline}"
	 title="{node|short}: {desc|escape|firstline}">{author|user}@{rev}</a>
    </td>
    <td class="lineno">
      <a href="#{lineid}" id="{lineid}">{linenumber}</a>
    </td>
    <td class="source">{line|escape}</td>
  </tr>'
difflineplus = '<span style="color:#008800;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
difflineminus = '<span style="color:#cc0000;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
difflineat = '<span style="color:#990099;"><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'
diffline = '<span><a class="linenr" href="#{lineid}" id="{lineid}">{linenumber}</a> {line|escape}</span>'

comparisonblock ='
  <tbody class="block">
  {lines}
  </tbody>'
comparisonline = '
  <tr>
    <td class="source {type}"><a class="linenr" href="#{lineid}" id="{lineid}">{leftlinenumber}</a> {leftline|escape}</td>
    <td class="source {type}"><a class="linenr" href="#{lineid}" id="{lineid}">{rightlinenumber}</a> {rightline|escape}</td>
  </tr>'

changelogparent = '
  <tr>
    <th class="parent">parent {rev}:</th>
    <td class="parent">
      <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a>
    </td>
  </tr>'
changesetbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
changesetparent = '
  <dt>parent {rev}</dt>
  <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
filerevbranch = '<dt>branch</dt><dd>{name|escape}</dd>'
filerevparent = '
  <dt>parent {rev}</dt>
  <dd>
    <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
      {rename%filerename}{node|short}
    </a>
  </dd>'
filerename = '{file|escape}@'
filelogrename = '| <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">base</a>'
fileannotateparent = '
  <dt>parent {rev}</dt>
  <dd>
    <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">
      {rename%filerename}{node|short}
    </a>
  </dd>'
changelogchild = '
  <dt>child {rev}:</dt>
  <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
changesetchild = '
  <dt>child {rev}</dt>
  <dd><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{node|short}</a></dd>'
filerevchild = '
  <dt>child {rev}</dt>
  <dd>
    <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
  </dd>'
fileannotatechild = '
  <dt>child {rev}</dt>
  <dd>
    <a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a>
  </dd>'
tags = tags.tmpl
tagentry = '
  <tr class="parity{parity}">
    <td class="nowrap age">{date|rfc822date}</td>
    <td><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{tag|escape}</a></td>
    <td class="nowrap">
      <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
      <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
      <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
    </td>
  </tr>'
bookmarks = bookmarks.tmpl
bookmarkentry = '
  <tr class="parity{parity}">
    <td class="nowrap date">{date|rfc822date}</td>
    <td><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{bookmark|escape}</a></td>
    <td class="nowrap">
      <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
      <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
      <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
    </td>
  </tr>'
branches = branches.tmpl
branchentry = '
  <tr class="parity{parity}">
    <td class="nowrap age">{date|rfc822date}</td>
    <td><a href="{url|urlescape}shortlog/{node|short}{sessionvars%urlparameter}">{node|short}</a></td>
    <td class="{status}">{branch|escape}</td>
    <td class="nowrap">
      <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
      <a href="{url|urlescape}log/{node|short}{sessionvars%urlparameter}">changelog</a> |
      <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
    </td>
  </tr>'
diffblock = '<pre>{lines}</pre>'
filediffparent = '
  <dt>parent {rev}</dt>
  <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
filecompparent = '
  <dt>parent {rev}</dt>
  <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
filelogparent = '
  <tr>
    <td align="right">parent {rev}:&nbsp;</td>
    <td><a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
  </tr>'
filediffchild = '
  <dt>child {rev}</dt>
  <dd><a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
filecompchild = '
  <dt>child {rev}</dt>
  <dd><a href="{url|urlescape}comparison/{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></dd>'
filelogchild = '
  <tr>
    <td align="right">child {rev}:&nbsp;</td>
    <td><a href="{url|urlescape}file{node|short}/{file|urlescape}{sessionvars%urlparameter}">{node|short}</a></td>
  </tr>'
shortlog = shortlog.tmpl
tagtag = '<span class="tagtag" title="{name|escape}">{name|escape}</span> '
branchtag = '<span class="branchtag" title="{name|escape}">{name|escape}</span> '
inbranchtag = '<span class="inbranchtag" title="{name|escape}">{name|escape}</span> '
bookmarktag = '<span class="bookmarktag" title="{name|escape}">{name|escape}</span> '
shortlogentry = '
  <tr class="parity{parity}">
    <td class="nowrap age">{date|rfc822date}</td>
    <td>{author|person}</td>
    <td>
      <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">
        {desc|strip|firstline|escape|nonempty}
        <span class="logtags">{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}{bookmarks%bookmarktag}</span>
      </a>
    </td>
    <td class="nowrap">
      <a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">changeset</a> |
      <a href="{url|urlescape}file/{node|short}{sessionvars%urlparameter}">files</a>
    </td>
  </tr>'
filelogentry = '
  <tr class="parity{parity}">
    <td class="nowrap age">{date|rfc822date}</td>
    <td><a href="{url|urlescape}rev/{node|short}{sessionvars%urlparameter}">{desc|strip|firstline|escape|nonempty}</a></td>
    <td class="nowrap">
      <a href="{url|urlescape}file/{node|short}/{file|urlescape}{sessionvars%urlparameter}">file</a>&nbsp;|&nbsp;<a href="{url|urlescape}diff/{node|short}/{file|urlescape}{sessionvars%urlparameter}">diff</a>&nbsp;|&nbsp;<a href="{url|urlescape}annotate/{node|short}/{file|urlescape}{sessionvars%urlparameter}">annotate</a>
      {rename%filelogrename}
    </td>
  </tr>'
archiveentry = '<li><a href="{url|urlescape}archive/{node|short}{extension}{ifeq(path,'/','',path|urlescape)}">{type|escape}</a></li>'
indexentry = '
  <tr class="parity{parity}">
    <td><a href="{url|urlescape}{sessionvars%urlparameter}">{name|escape}</a></td>
    <td>{description}</td>
    <td>{contact|obfuscate}</td>
    <td class="age">{lastchange|rfc822date}</td>
    <td class="indexlinks">{archives%indexarchiveentry}</td>
    <td>
        {if(isdirectory, '',
            '<div class="rss_logo">
                <a href="{url|urlescape}rss-log">RSS</a> <a href="{url|urlescape}atom-log">Atom</a>
            </div>'
            )}
    </td>
  </tr>\n'
indexarchiveentry = '<a href="{url|urlescape}archive/{node|short}{extension}">{type|escape}</a> '
index = index.tmpl
urlparameter = '{separator}{name}={value|urlescape}'
hiddenformentry = '<input type="hidden" name="{name}" value="{value|escape}" />'
graph = graph.tmpl
breadcrumb = '&gt; <a href="{url|urlescape}">{name|escape}</a> '