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