view tests/test-check-py3-compat.t @ 27784:432242f41d9f

obsolete: make _computeobsoleteset much faster This patch makes _computeobsoleteset much faster by looping over the draft and secrets as opposed to looping over the successors. This works because "number of draft and secret" is typically way smaller(<100) than the number of successor in the repo (~90k in my checkout of core mercurial as of today). And also because it is very fast to compute "not public()". I timed the code with the following setup: """ from mercurial import hg, ui, obsolete ui = ui.ui() repo = hg.repository(ui, "~/hg") l = repo.obsstore.successors # This caches the result """ With about 90k successors. k=obsolete._computeobsoleteset(repo) before this patch: 10 loops, best of 3: 33.9 ms per loop k=obsolete._computeobsoleteset(repo) after this patch: 10000 loops, best of 3: 83.3 µs per loop
author Laurent Charignon <lc2817@columbia.edu>
date Wed, 13 Jan 2016 21:52:26 -0800
parents 10bed65ef209
children a1163ee26e4a
line wrap: on
line source

#require test-repo

  $ cd "$TESTDIR"/..

  $ hg files 'set:(**.py)' | sed 's|\\|/|g' | xargs python contrib/check-py3-compat.py
  contrib/casesmash.py not using absolute_import
  contrib/check-code.py not using absolute_import
  contrib/check-code.py requires print_function
  contrib/check-config.py not using absolute_import
  contrib/check-config.py requires print_function
  contrib/debugcmdserver.py not using absolute_import
  contrib/debugcmdserver.py requires print_function
  contrib/debugshell.py not using absolute_import
  contrib/fixpax.py not using absolute_import
  contrib/fixpax.py requires print_function
  contrib/hgclient.py not using absolute_import
  contrib/hgclient.py requires print_function
  contrib/hgfixes/fix_bytes.py not using absolute_import
  contrib/hgfixes/fix_bytesmod.py not using absolute_import
  contrib/hgfixes/fix_leftover_imports.py not using absolute_import
  contrib/import-checker.py not using absolute_import
  contrib/import-checker.py requires print_function
  contrib/memory.py not using absolute_import
  contrib/perf.py not using absolute_import
  contrib/python-hook-examples.py not using absolute_import
  contrib/revsetbenchmarks.py not using absolute_import
  contrib/revsetbenchmarks.py requires print_function
  contrib/showstack.py not using absolute_import
  contrib/synthrepo.py not using absolute_import
  contrib/win32/hgwebdir_wsgi.py not using absolute_import
  doc/check-seclevel.py not using absolute_import
  doc/gendoc.py not using absolute_import
  doc/hgmanpage.py not using absolute_import
  hgext/__init__.py not using absolute_import
  hgext/acl.py not using absolute_import
  hgext/blackbox.py not using absolute_import
  hgext/bugzilla.py not using absolute_import
  hgext/censor.py not using absolute_import
  hgext/children.py not using absolute_import
  hgext/churn.py not using absolute_import
  hgext/clonebundles.py not using absolute_import
  hgext/color.py not using absolute_import
  hgext/convert/__init__.py not using absolute_import
  hgext/convert/bzr.py not using absolute_import
  hgext/convert/common.py not using absolute_import
  hgext/convert/convcmd.py not using absolute_import
  hgext/convert/cvs.py not using absolute_import
  hgext/convert/cvsps.py not using absolute_import
  hgext/convert/darcs.py not using absolute_import
  hgext/convert/filemap.py not using absolute_import
  hgext/convert/git.py not using absolute_import
  hgext/convert/gnuarch.py not using absolute_import
  hgext/convert/hg.py not using absolute_import
  hgext/convert/monotone.py not using absolute_import
  hgext/convert/p4.py not using absolute_import
  hgext/convert/subversion.py not using absolute_import
  hgext/convert/transport.py not using absolute_import
  hgext/eol.py not using absolute_import
  hgext/extdiff.py not using absolute_import
  hgext/factotum.py not using absolute_import
  hgext/fetch.py not using absolute_import
  hgext/gpg.py not using absolute_import
  hgext/graphlog.py not using absolute_import
  hgext/hgcia.py not using absolute_import
  hgext/hgk.py not using absolute_import
  hgext/highlight/__init__.py not using absolute_import
  hgext/highlight/highlight.py not using absolute_import
  hgext/histedit.py not using absolute_import
  hgext/keyword.py not using absolute_import
  hgext/largefiles/__init__.py not using absolute_import
  hgext/largefiles/basestore.py not using absolute_import
  hgext/largefiles/lfcommands.py not using absolute_import
  hgext/largefiles/lfutil.py not using absolute_import
  hgext/largefiles/localstore.py not using absolute_import
  hgext/largefiles/overrides.py not using absolute_import
  hgext/largefiles/proto.py not using absolute_import
  hgext/largefiles/remotestore.py not using absolute_import
  hgext/largefiles/reposetup.py not using absolute_import
  hgext/largefiles/uisetup.py not using absolute_import
  hgext/largefiles/wirestore.py not using absolute_import
  hgext/mq.py not using absolute_import
  hgext/notify.py not using absolute_import
  hgext/pager.py not using absolute_import
  hgext/patchbomb.py not using absolute_import
  hgext/purge.py not using absolute_import
  hgext/rebase.py not using absolute_import
  hgext/record.py not using absolute_import
  hgext/relink.py not using absolute_import
  hgext/schemes.py not using absolute_import
  hgext/share.py not using absolute_import
  hgext/shelve.py not using absolute_import
  hgext/strip.py not using absolute_import
  hgext/transplant.py not using absolute_import
  hgext/win32mbcs.py not using absolute_import
  hgext/win32text.py not using absolute_import
  hgext/zeroconf/Zeroconf.py not using absolute_import
  hgext/zeroconf/Zeroconf.py requires print_function
  hgext/zeroconf/__init__.py not using absolute_import
  i18n/check-translation.py not using absolute_import
  i18n/polib.py not using absolute_import
  mercurial/cmdutil.py not using absolute_import
  mercurial/commands.py not using absolute_import
  setup.py not using absolute_import
  tests/filterpyflakes.py requires print_function
  tests/generate-working-copy-states.py requires print_function
  tests/get-with-headers.py requires print_function
  tests/heredoctest.py requires print_function
  tests/hypothesishelpers.py not using absolute_import
  tests/hypothesishelpers.py requires print_function
  tests/killdaemons.py not using absolute_import
  tests/md5sum.py not using absolute_import
  tests/mockblackbox.py not using absolute_import
  tests/printenv.py not using absolute_import
  tests/readlink.py not using absolute_import
  tests/readlink.py requires print_function
  tests/revlog-formatv0.py not using absolute_import
  tests/run-tests.py not using absolute_import
  tests/seq.py not using absolute_import
  tests/seq.py requires print_function
  tests/silenttestrunner.py not using absolute_import
  tests/silenttestrunner.py requires print_function
  tests/sitecustomize.py not using absolute_import
  tests/svn-safe-append.py not using absolute_import
  tests/svnxml.py not using absolute_import
  tests/test-ancestor.py requires print_function
  tests/test-atomictempfile.py not using absolute_import
  tests/test-batching.py not using absolute_import
  tests/test-batching.py requires print_function
  tests/test-bdiff.py not using absolute_import
  tests/test-bdiff.py requires print_function
  tests/test-context.py not using absolute_import
  tests/test-context.py requires print_function
  tests/test-demandimport.py not using absolute_import
  tests/test-demandimport.py requires print_function
  tests/test-dispatch.py not using absolute_import
  tests/test-dispatch.py requires print_function
  tests/test-doctest.py not using absolute_import
  tests/test-duplicateoptions.py not using absolute_import
  tests/test-duplicateoptions.py requires print_function
  tests/test-filecache.py not using absolute_import
  tests/test-filecache.py requires print_function
  tests/test-filelog.py not using absolute_import
  tests/test-filelog.py requires print_function
  tests/test-hg-parseurl.py not using absolute_import
  tests/test-hg-parseurl.py requires print_function
  tests/test-hgweb-auth.py not using absolute_import
  tests/test-hgweb-auth.py requires print_function
  tests/test-hgwebdir-paths.py not using absolute_import
  tests/test-hybridencode.py not using absolute_import
  tests/test-hybridencode.py requires print_function
  tests/test-lrucachedict.py not using absolute_import
  tests/test-lrucachedict.py requires print_function
  tests/test-manifest.py not using absolute_import
  tests/test-minirst.py not using absolute_import
  tests/test-minirst.py requires print_function
  tests/test-parseindex2.py not using absolute_import
  tests/test-parseindex2.py requires print_function
  tests/test-pathencode.py not using absolute_import
  tests/test-pathencode.py requires print_function
  tests/test-propertycache.py not using absolute_import
  tests/test-propertycache.py requires print_function
  tests/test-revlog-ancestry.py not using absolute_import
  tests/test-revlog-ancestry.py requires print_function
  tests/test-run-tests.py not using absolute_import
  tests/test-simplemerge.py not using absolute_import
  tests/test-status-inprocess.py not using absolute_import
  tests/test-status-inprocess.py requires print_function
  tests/test-symlink-os-yes-fs-no.py not using absolute_import
  tests/test-trusted.py not using absolute_import
  tests/test-trusted.py requires print_function
  tests/test-ui-color.py not using absolute_import
  tests/test-ui-color.py requires print_function
  tests/test-ui-config.py not using absolute_import
  tests/test-ui-config.py requires print_function
  tests/test-ui-verbosity.py not using absolute_import
  tests/test-ui-verbosity.py requires print_function
  tests/test-url.py not using absolute_import
  tests/test-url.py requires print_function
  tests/test-walkrepo.py requires print_function
  tests/test-wireproto.py requires print_function
  tests/tinyproxy.py requires print_function