##// END OF EJS Templates
perf: introduce more cache invalidation option in perf::tags...
marmoute -
r51831:f02b62b7 stable
parent child Browse files
Show More
@@ -882,23 +882,72 b' def perfheads(ui, repo, **opts):'
882 fm.end()
882 fm.end()
883
883
884
884
885 def _default_clear_on_disk_tags_cache(repo):
886 from mercurial import tags
887
888 repo.cachevfs.tryunlink(tags._filename(repo))
889
890
891 def _default_clear_on_disk_tags_fnodes_cache(repo):
892 from mercurial import tags
893
894 repo.cachevfs.tryunlink(tags._fnodescachefile)
895
896
885 @command(
897 @command(
886 b'perf::tags|perftags',
898 b'perf::tags|perftags',
887 formatteropts
899 formatteropts
888 + [
900 + [
889 (b'', b'clear-revlogs', False, b'refresh changelog and manifest'),
901 (b'', b'clear-revlogs', False, b'refresh changelog and manifest'),
902 (
903 b'',
904 b'clear-on-disk-cache',
905 False,
906 b'clear on disk tags cache (DESTRUCTIVE)',
907 ),
908 (
909 b'',
910 b'clear-fnode-cache',
911 False,
912 b'clear on disk file node cache (DESTRUCTIVE),',
913 ),
890 ],
914 ],
891 )
915 )
892 def perftags(ui, repo, **opts):
916 def perftags(ui, repo, **opts):
917 """Benchmark tags retrieval in various situation
918
919 The option marked as (DESTRUCTIVE) will alter the on-disk cache, possibly
920 altering performance after the command was run. However, it does not
921 destroy any stored data.
922 """
923 from mercurial import tags
924
893 opts = _byteskwargs(opts)
925 opts = _byteskwargs(opts)
894 timer, fm = gettimer(ui, opts)
926 timer, fm = gettimer(ui, opts)
895 repocleartagscache = repocleartagscachefunc(repo)
927 repocleartagscache = repocleartagscachefunc(repo)
896 clearrevlogs = opts[b'clear_revlogs']
928 clearrevlogs = opts[b'clear_revlogs']
929 clear_disk = opts[b'clear_on_disk_cache']
930 clear_fnode = opts[b'clear_fnode_cache']
931
932 clear_disk_fn = getattr(
933 tags,
934 "clear_cache_on_disk",
935 _default_clear_on_disk_tags_cache,
936 )
937 clear_fnodes_fn = getattr(
938 tags,
939 "clear_cache_fnodes",
940 _default_clear_on_disk_tags_fnodes_cache,
941 )
897
942
898 def s():
943 def s():
899 if clearrevlogs:
944 if clearrevlogs:
900 clearchangelog(repo)
945 clearchangelog(repo)
901 clearfilecache(repo.unfiltered(), 'manifest')
946 clearfilecache(repo.unfiltered(), 'manifest')
947 if clear_disk:
948 clear_disk_fn(repo)
949 if clear_fnode:
950 clear_fnodes_fn(repo)
902 repocleartagscache()
951 repocleartagscache()
903
952
904 def t():
953 def t():
@@ -910,3 +910,13 b' class hgtagsfnodescache:'
910 )
910 )
911 finally:
911 finally:
912 lock.release()
912 lock.release()
913
914
915 def clear_cache_on_disk(repo):
916 """function used by the perf extension to "tags" cache"""
917 repo.cachevfs.tryunlink(_filename(repo))
918
919
920 def clear_cache_fnodes(repo):
921 """function used by the perf extension to clear "file node cache"""
922 repo.cachevfs.tryunlink(_filename(repo))
@@ -194,7 +194,7 b' perfstatus'
194 benchmark the full generation of a stream clone
194 benchmark the full generation of a stream clone
195 perf::stream-locked-section
195 perf::stream-locked-section
196 benchmark the initial, repo-locked, section of a stream-clone
196 benchmark the initial, repo-locked, section of a stream-clone
197 perf::tags (no help text available)
197 perf::tags Benchmark tags retrieval in various situation
198 perf::templating
198 perf::templating
199 test the rendering time of a given template
199 test the rendering time of a given template
200 perf::unbundle
200 perf::unbundle
General Comments 0
You need to be logged in to leave comments. Login now