blob: c0851b32047f96ce030d13379abcd44afba01cc6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
(** TODO: Figure out how to test "sanity" for the ltac profiler output *)
Fixpoint fact (n : nat) := match n with 0 => 1 | S n' => n * fact n' end.
Fixpoint walk (n : nat) := match n with 0 => tt | S n => walk n end.
Ltac slow := idtac + (do 2 (let x := eval lazy in (walk (fact 9)) in idtac)).
Ltac slow2 := idtac + (do 2 (let x := eval lazy in (walk (fact 9)) in idtac)).
Ltac multi := idtac + slow + slow2.
Set Ltac Profiling.
Goal True.
Time try (multi; fail).
(* Warning: Ltac Profiler cannot yet handle backtracking into multi-success
tactics; profiling results may be wildly inaccurate.
[profile-backtracking,ltac] *)
Show Ltac Profile.
(* Used to be:
total time: 0.000s
tactic local total calls max
────────────────────────────────────────┴──────┴──────┴───────┴─────────┘
─multi --------------------------------- 47.1% 47.1% 1 0.000s
─slow ---------------------------------- 35.3% 35.3% 1 0.000s
─slow2 --------------------------------- 17.6% 17.6% 1 0.000s
tactic local total calls max
────────────────────────────────────────┴──────┴──────┴───────┴─────────┘
─multi --------------------------------- 47.1% 47.1% 1 0.000s
─slow ---------------------------------- 35.3% 35.3% 1 0.000s
─slow2 --------------------------------- 17.6% 17.6% 1 0.000s
*)
(* Now:
total time: 2.074s
tactic local total calls max
────────────────────────────────────────┴──────┴──────┴───────┴─────────┘
─multi --------------------------------- 0.0% 100.0% 6 1.119s
─slow ---------------------------------- 54.0% 54.0% 3 1.119s
─slow2 --------------------------------- 46.0% 46.0% 3 0.955s
tactic local total calls max
────────────────────────────────────────┴──────┴──────┴───────┴─────────┘
─multi --------------------------------- 0.0% 100.0% 6 1.119s
├─slow -------------------------------- 54.0% 54.0% 3 1.119s
└─slow2 ------------------------------- 46.0% 46.0% 3 0.955s
*)
Abort.
|