Show More
@@ -15,6 +15,16 b' Configurations' | |||||
15 | ``presleep`` |
|
15 | ``presleep`` | |
16 | number of second to wait before any group of run (default: 1) |
|
16 | number of second to wait before any group of run (default: 1) | |
17 |
|
17 | |||
|
18 | ``run-limits`` | |||
|
19 | Control the number of run each benchmark will perform. The option value | |||
|
20 | should be a list of `<time>-<numberofrun>` pairs. After each run the | |||
|
21 | condition are considered in order with the following logic: | |||
|
22 | ||||
|
23 | If benchmark have been running for <time> seconds, and we have performed | |||
|
24 | <numberofrun> iterations, stop the benchmark, | |||
|
25 | ||||
|
26 | The default value is: `3.0-100, 10.0-3` | |||
|
27 | ||||
18 | ``stub`` |
|
28 | ``stub`` | |
19 | When set, benchmark will only be run once, useful for testing (default: off) |
|
29 | When set, benchmark will only be run once, useful for testing (default: off) | |
20 | ''' |
|
30 | ''' | |
@@ -225,6 +235,9 b' try:' | |||||
225 | configitem(b'perf', b'all-timing', |
|
235 | configitem(b'perf', b'all-timing', | |
226 | default=mercurial.configitems.dynamicdefault, |
|
236 | default=mercurial.configitems.dynamicdefault, | |
227 | ) |
|
237 | ) | |
|
238 | configitem(b'perf', b'run-limits', | |||
|
239 | default=mercurial.configitems.dynamicdefault, | |||
|
240 | ) | |||
228 | except (ImportError, AttributeError): |
|
241 | except (ImportError, AttributeError): | |
229 | pass |
|
242 | pass | |
230 |
|
243 | |||
@@ -297,7 +310,34 b' def gettimer(ui, opts=None):' | |||||
297 |
|
310 | |||
298 | # experimental config: perf.all-timing |
|
311 | # experimental config: perf.all-timing | |
299 | displayall = ui.configbool(b"perf", b"all-timing", False) |
|
312 | displayall = ui.configbool(b"perf", b"all-timing", False) | |
300 | return functools.partial(_timer, fm, displayall=displayall), fm |
|
313 | ||
|
314 | # experimental config: perf.run-limits | |||
|
315 | limitspec = ui.configlist(b"perf", b"run-limits", []) | |||
|
316 | limits = [] | |||
|
317 | for item in limitspec: | |||
|
318 | parts = item.split('-', 1) | |||
|
319 | if len(parts) < 2: | |||
|
320 | ui.warn(('malformatted run limit entry, missing "-": %s\n' | |||
|
321 | % item)) | |||
|
322 | continue | |||
|
323 | try: | |||
|
324 | time_limit = float(parts[0]) | |||
|
325 | except ValueError as e: | |||
|
326 | ui.warn(('malformatted run limit entry, %s: %s\n' | |||
|
327 | % (e, item))) | |||
|
328 | continue | |||
|
329 | try: | |||
|
330 | run_limit = int(parts[1]) | |||
|
331 | except ValueError as e: | |||
|
332 | ui.warn(('malformatted run limit entry, %s: %s\n' | |||
|
333 | % (e, item))) | |||
|
334 | continue | |||
|
335 | limits.append((time_limit, run_limit)) | |||
|
336 | if not limits: | |||
|
337 | limits = DEFAULTLIMITS | |||
|
338 | ||||
|
339 | t = functools.partial(_timer, fm, displayall=displayall, limits=limits) | |||
|
340 | return t, fm | |||
301 |
|
341 | |||
302 | def stub_timer(fm, func, setup=None, title=None): |
|
342 | def stub_timer(fm, func, setup=None, title=None): | |
303 | if setup is not None: |
|
343 | if setup is not None: |
@@ -55,6 +55,16 b' perfstatus' | |||||
55 | "presleep" |
|
55 | "presleep" | |
56 | number of second to wait before any group of run (default: 1) |
|
56 | number of second to wait before any group of run (default: 1) | |
57 |
|
57 | |||
|
58 | "run-limits" | |||
|
59 | Control the number of run each benchmark will perform. The option value | |||
|
60 | should be a list of '<time>-<numberofrun>' pairs. After each run the | |||
|
61 | condition are considered in order with the following logic: | |||
|
62 | ||||
|
63 | If benchmark have been running for <time> seconds, and we have performed | |||
|
64 | <numberofrun> iterations, stop the benchmark, | |||
|
65 | ||||
|
66 | The default value is: '3.0-100, 10.0-3' | |||
|
67 | ||||
58 | "stub" |
|
68 | "stub" | |
59 | When set, benchmark will only be run once, useful for testing (default: |
|
69 | When set, benchmark will only be run once, useful for testing (default: | |
60 | off) |
|
70 | off) | |
@@ -231,6 +241,31 b' perfstatus' | |||||
231 | $ hg perfparents |
|
241 | $ hg perfparents | |
232 | $ hg perfdiscovery -q . |
|
242 | $ hg perfdiscovery -q . | |
233 |
|
243 | |||
|
244 | Test run control | |||
|
245 | ---------------- | |||
|
246 | ||||
|
247 | Simple single entry | |||
|
248 | ||||
|
249 | $ hg perfparents --config perf.stub=no --config perf.run-limits='0.000000001-15' | |||
|
250 | ! wall * comb * user * sys * (best of 15) (glob) | |||
|
251 | ||||
|
252 | Multiple entries | |||
|
253 | ||||
|
254 | $ hg perfparents --config perf.stub=no --config perf.run-limits='500000-1, 0.000000001-5' | |||
|
255 | ! wall * comb * user * sys * (best of 5) (glob) | |||
|
256 | ||||
|
257 | error case are ignored | |||
|
258 | ||||
|
259 | $ hg perfparents --config perf.stub=no --config perf.run-limits='500, 0.000000001-5' | |||
|
260 | malformatted run limit entry, missing "-": 500 | |||
|
261 | ! wall * comb * user * sys * (best of 5) (glob) | |||
|
262 | $ hg perfparents --config perf.stub=no --config perf.run-limits='aaa-12, 0.000000001-5' | |||
|
263 | malformatted run limit entry, could not convert string to float: aaa: aaa-12 | |||
|
264 | ! wall * comb * user * sys * (best of 5) (glob) | |||
|
265 | $ hg perfparents --config perf.stub=no --config perf.run-limits='12-aaaaaa, 0.000000001-5' | |||
|
266 | malformatted run limit entry, invalid literal for int() with base 10: 'aaaaaa': 12-aaaaaa | |||
|
267 | ! wall * comb * user * sys * (best of 5) (glob) | |||
|
268 | ||||
234 | test actual output |
|
269 | test actual output | |
235 | ------------------ |
|
270 | ------------------ | |
236 |
|
271 |
General Comments 0
You need to be logged in to leave comments.
Login now