Fossil SCM

Extended pass manager to keep timing data for the executed passes and show them after completion of all passes.

aku 2007-10-24 14:44 trunk
Commit 05f9c95573a075fa7fdbf3175c1e328a3f42b471
--- tools/cvs2fossil/lib/c2f_pass.tcl
+++ tools/cvs2fossil/lib/c2f_pass.tcl
@@ -97,15 +97,10 @@
9797
9898
typemethod run {} {
9999
if {$mystart < 0} {set mystart 0}
100100
if {$myend < 0} {set myend [expr {[llength $mypasses] - 1}]}
101101
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
-
107102
set skipped [lrange $mypasses 0 [expr {$mystart - 1}]]
108103
set run [lrange $mypasses $mystart $myend]
109104
set defered [lrange $mypasses [expr {$myend + 1}] end]
110105
111106
foreach p $skipped {
@@ -116,20 +111,36 @@
116111
log write 0 pass "Setup $p"
117112
Call $p setup
118113
}
119114
foreach p $run {
120115
log write 0 pass "Begin $p"
121
- Call $p run
116
+ Time $p [lindex [time {Call $p run} 1] 0]
122117
log write 0 pass "Done $p"
123118
trouble abort?
124119
}
125120
foreach p $defered {
126121
log write 0 pass "Defer $p"
127122
Call $p discard
128123
}
129124
130125
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
+ }
131142
return
132143
}
133144
134145
# # ## ### ##### ######## #############
135146
## Internal methods
@@ -170,10 +181,11 @@
170181
typevariable mydesc -array {} ; # Pass descriptions (one line).
171182
typevariable mycmd -array {} ; # Pass callback command.
172183
173184
typevariable mystart -1
174185
typevariable myend -1
186
+ typevariable mytime {} ; # Timing data for each executed pass.
175187
176188
# # ## ### ##### ######## #############
177189
## Configuration
178190
179191
pragma -hasinstances no ; # singleton
180192
--- 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

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button