Fossil SCM
Extended pass manager to keep timing data for the executed passes and show them after completion of all passes.
Commit
05f9c95573a075fa7fdbf3175c1e328a3f42b471
Parent
adf168e23e3d381…
1 file changed
+18
-6
+18
-6
| --- tools/cvs2fossil/lib/c2f_pass.tcl | ||
| +++ tools/cvs2fossil/lib/c2f_pass.tcl | ||
| @@ -97,15 +97,10 @@ | ||
| 97 | 97 | |
| 98 | 98 | typemethod run {} { |
| 99 | 99 | if {$mystart < 0} {set mystart 0} |
| 100 | 100 | if {$myend < 0} {set myend [expr {[llength $mypasses] - 1}]} |
| 101 | 101 | |
| 102 | - # TODO: Timing statistics for the passes. | |
| 103 | - # TODO: Artifact manager (clean after pass?. need to know skipped/defered passes ?) | |
| 104 | - # TODO: | |
| 105 | - # TODO: | |
| 106 | - | |
| 107 | 102 | set skipped [lrange $mypasses 0 [expr {$mystart - 1}]] |
| 108 | 103 | set run [lrange $mypasses $mystart $myend] |
| 109 | 104 | set defered [lrange $mypasses [expr {$myend + 1}] end] |
| 110 | 105 | |
| 111 | 106 | foreach p $skipped { |
| @@ -116,20 +111,36 @@ | ||
| 116 | 111 | log write 0 pass "Setup $p" |
| 117 | 112 | Call $p setup |
| 118 | 113 | } |
| 119 | 114 | foreach p $run { |
| 120 | 115 | log write 0 pass "Begin $p" |
| 121 | - Call $p run | |
| 116 | + Time $p [lindex [time {Call $p run} 1] 0] | |
| 122 | 117 | log write 0 pass "Done $p" |
| 123 | 118 | trouble abort? |
| 124 | 119 | } |
| 125 | 120 | foreach p $defered { |
| 126 | 121 | log write 0 pass "Defer $p" |
| 127 | 122 | Call $p discard |
| 128 | 123 | } |
| 129 | 124 | |
| 130 | 125 | state release |
| 126 | + ShowTimes | |
| 127 | + return | |
| 128 | + } | |
| 129 | + | |
| 130 | + proc Time {pass useconds} { | |
| 131 | + ::variable mytime | |
| 132 | + lappend mytime $pass $useconds | |
| 133 | + return | |
| 134 | + } | |
| 135 | + | |
| 136 | + proc ShowTimes {} { | |
| 137 | + ::variable mytime | |
| 138 | + foreach {pass useconds} $mytime { | |
| 139 | + set sec [format %8.2f [expr {double($useconds)/1e6}]] | |
| 140 | + log write 0 pass "$sec sec/$pass" | |
| 141 | + } | |
| 131 | 142 | return |
| 132 | 143 | } |
| 133 | 144 | |
| 134 | 145 | # # ## ### ##### ######## ############# |
| 135 | 146 | ## Internal methods |
| @@ -170,10 +181,11 @@ | ||
| 170 | 181 | typevariable mydesc -array {} ; # Pass descriptions (one line). |
| 171 | 182 | typevariable mycmd -array {} ; # Pass callback command. |
| 172 | 183 | |
| 173 | 184 | typevariable mystart -1 |
| 174 | 185 | typevariable myend -1 |
| 186 | + typevariable mytime {} ; # Timing data for each executed pass. | |
| 175 | 187 | |
| 176 | 188 | # # ## ### ##### ######## ############# |
| 177 | 189 | ## Configuration |
| 178 | 190 | |
| 179 | 191 | pragma -hasinstances no ; # singleton |
| 180 | 192 |
| --- tools/cvs2fossil/lib/c2f_pass.tcl | |
| +++ tools/cvs2fossil/lib/c2f_pass.tcl | |
| @@ -97,15 +97,10 @@ | |
| 97 | |
| 98 | typemethod run {} { |
| 99 | if {$mystart < 0} {set mystart 0} |
| 100 | if {$myend < 0} {set myend [expr {[llength $mypasses] - 1}]} |
| 101 | |
| 102 | # TODO: Timing statistics for the passes. |
| 103 | # TODO: Artifact manager (clean after pass?. need to know skipped/defered passes ?) |
| 104 | # TODO: |
| 105 | # TODO: |
| 106 | |
| 107 | set skipped [lrange $mypasses 0 [expr {$mystart - 1}]] |
| 108 | set run [lrange $mypasses $mystart $myend] |
| 109 | set defered [lrange $mypasses [expr {$myend + 1}] end] |
| 110 | |
| 111 | foreach p $skipped { |
| @@ -116,20 +111,36 @@ | |
| 116 | log write 0 pass "Setup $p" |
| 117 | Call $p setup |
| 118 | } |
| 119 | foreach p $run { |
| 120 | log write 0 pass "Begin $p" |
| 121 | Call $p run |
| 122 | log write 0 pass "Done $p" |
| 123 | trouble abort? |
| 124 | } |
| 125 | foreach p $defered { |
| 126 | log write 0 pass "Defer $p" |
| 127 | Call $p discard |
| 128 | } |
| 129 | |
| 130 | state release |
| 131 | return |
| 132 | } |
| 133 | |
| 134 | # # ## ### ##### ######## ############# |
| 135 | ## Internal methods |
| @@ -170,10 +181,11 @@ | |
| 170 | typevariable mydesc -array {} ; # Pass descriptions (one line). |
| 171 | typevariable mycmd -array {} ; # Pass callback command. |
| 172 | |
| 173 | typevariable mystart -1 |
| 174 | typevariable myend -1 |
| 175 | |
| 176 | # # ## ### ##### ######## ############# |
| 177 | ## Configuration |
| 178 | |
| 179 | pragma -hasinstances no ; # singleton |
| 180 |
| --- tools/cvs2fossil/lib/c2f_pass.tcl | |
| +++ tools/cvs2fossil/lib/c2f_pass.tcl | |
| @@ -97,15 +97,10 @@ | |
| 97 | |
| 98 | typemethod run {} { |
| 99 | if {$mystart < 0} {set mystart 0} |
| 100 | if {$myend < 0} {set myend [expr {[llength $mypasses] - 1}]} |
| 101 | |
| 102 | set skipped [lrange $mypasses 0 [expr {$mystart - 1}]] |
| 103 | set run [lrange $mypasses $mystart $myend] |
| 104 | set defered [lrange $mypasses [expr {$myend + 1}] end] |
| 105 | |
| 106 | foreach p $skipped { |
| @@ -116,20 +111,36 @@ | |
| 111 | log write 0 pass "Setup $p" |
| 112 | Call $p setup |
| 113 | } |
| 114 | foreach p $run { |
| 115 | log write 0 pass "Begin $p" |
| 116 | Time $p [lindex [time {Call $p run} 1] 0] |
| 117 | log write 0 pass "Done $p" |
| 118 | trouble abort? |
| 119 | } |
| 120 | foreach p $defered { |
| 121 | log write 0 pass "Defer $p" |
| 122 | Call $p discard |
| 123 | } |
| 124 | |
| 125 | state release |
| 126 | ShowTimes |
| 127 | return |
| 128 | } |
| 129 | |
| 130 | proc Time {pass useconds} { |
| 131 | ::variable mytime |
| 132 | lappend mytime $pass $useconds |
| 133 | return |
| 134 | } |
| 135 | |
| 136 | proc ShowTimes {} { |
| 137 | ::variable mytime |
| 138 | foreach {pass useconds} $mytime { |
| 139 | set sec [format %8.2f [expr {double($useconds)/1e6}]] |
| 140 | log write 0 pass "$sec sec/$pass" |
| 141 | } |
| 142 | return |
| 143 | } |
| 144 | |
| 145 | # # ## ### ##### ######## ############# |
| 146 | ## Internal methods |
| @@ -170,10 +181,11 @@ | |
| 181 | typevariable mydesc -array {} ; # Pass descriptions (one line). |
| 182 | typevariable mycmd -array {} ; # Pass callback command. |
| 183 | |
| 184 | typevariable mystart -1 |
| 185 | typevariable myend -1 |
| 186 | typevariable mytime {} ; # Timing data for each executed pass. |
| 187 | |
| 188 | # # ## ### ##### ######## ############# |
| 189 | ## Configuration |
| 190 | |
| 191 | pragma -hasinstances no ; # singleton |
| 192 |