Mercurial > hg
annotate tests/test-execute-bit.t @ 41063:6603de284b0a
progress: avoid ui.configbool() lookup when progress bar is active
Profiling revealed that the ui.configbool('progress', 'debug') during
progress bar updates was consuming a significant amount of overhead.
This commit adds an attribute on progress bar instances that caches
this config option.
The impact on `hg perfprogress` with default options is significant:
before: ! wall 4.641942 comb 4.580000 user 4.210000 sys 0.370000 (best of 3)
after: ! wall 1.948626 comb 1.950000 user 1.950000 sys 0.000000 (best of 5)
After this change, profiling reveals that progress.progbar.progress()
is now consuming ~73% of time.
This change does not improve the execution time if the progress bar
is disabled. We may want a more comprehensive solution for that case,
as the progress bar won't be enabled in a number of scenarios (e.g.
servers and processes not attached to an interactive TTY).
I also think that overhead of ~2.0s for 1M updates is a bit high.
I suspect further refactoring of the progress bar can significantly
reduce overhead. I don't have plans to do this, however.
Differential Revision: https://phab.mercurial-scm.org/D5408
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Mon, 10 Dec 2018 20:06:58 +0000 |
parents | 7a9cbb315d84 |
children | b7fde9237c92 |
rev | line source |
---|---|
22046
7a9cbb315d84
tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents:
18334
diff
changeset
|
1 #require execbit |
5490
bf2bb53e5d2b
See if execute bit is honoured when we go back in time
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
2 |
12190
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
3 $ hg init |
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
4 $ echo a > a |
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
5 $ hg ci -Am'not executable' |
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
6 adding a |
5495
363ba35f55bd
test-execute-bit: skip if execute-bit is not supported
Patrick Mezard <pmezard@gmail.com>
parents:
5490
diff
changeset
|
7 |
12190
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
8 $ chmod +x a |
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
9 $ hg ci -m'executable' |
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
10 $ hg id |
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
11 79abf14474dc tip |
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
12 |
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
13 Make sure we notice the change of mode if the cached size == -1: |
5490
bf2bb53e5d2b
See if execute bit is honoured when we go back in time
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
14 |
12190
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
15 $ hg rm a |
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
16 $ hg revert -r 0 a |
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
17 $ hg debugstate |
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
18 n 0 -1 unset a |
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
19 $ hg status |
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
20 M a |
5490
bf2bb53e5d2b
See if execute bit is honoured when we go back in time
Bryan O'Sullivan <bos@serpentine.com>
parents:
diff
changeset
|
21 |
12190
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
22 $ hg up 0 |
18334
44bda93df90e
merge: changing the mode of a file is also an update
Mads Kiilerich <mads@kiilerich.com>
parents:
12190
diff
changeset
|
23 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
12190
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
24 $ hg id |
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
25 d69afc33ff8a |
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
26 $ test -x a && echo executable -- bad || echo not executable -- good |
9231c629ec10
tests: unify test-execute-bit
Adrian Buehlmann <adrian@cadifra.com>
parents:
6158
diff
changeset
|
27 not executable -- good |
6158
23ffe82615d8
repo.status: also compare flags for files in the lookup list.
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5495
diff
changeset
|
28 |