Fossil SCM
Reworked time keeping in the pass manager, the microseconds kept by by the 'time' command flow over after roughly 72 minutes (2^32 microseconds). We now use 'clock seconds' to explicitly keep time. This should flow over only after abuut 136 years. The loss of resolution is ok, the converter does not need it. Seconds are good enough.
Commit
9a763fe59632c27e7ff0e88e5a593763e4e5f354
Parent
b81901adcb9d1a5…
1 file changed
+11
-9
+11
-9
| --- tools/cvs2fossil/lib/c2f_pass.tcl | ||
| +++ tools/cvs2fossil/lib/c2f_pass.tcl | ||
| @@ -112,12 +112,15 @@ | ||
| 112 | 112 | log write 0 pass "Setup $p" |
| 113 | 113 | Call $p setup |
| 114 | 114 | } |
| 115 | 115 | foreach p $run { |
| 116 | 116 | log write 0 pass "Begin $p" |
| 117 | - Time $p [lindex [time {Call $p run} 1] 0] | |
| 117 | + set secbegin [clock seconds] | |
| 118 | + Call $p run | |
| 119 | + set secstop [clock seconds] | |
| 118 | 120 | log write 0 pass "Done $p" |
| 121 | + Time $p [expr {$secstop - $secbegin}] | |
| 119 | 122 | trouble abort? |
| 120 | 123 | } |
| 121 | 124 | foreach p $defered { |
| 122 | 125 | log write 0 pass "Defer $p" |
| 123 | 126 | Call $p discard |
| @@ -131,28 +134,27 @@ | ||
| 131 | 134 | typemethod current {} { return $mycurrentpass } |
| 132 | 135 | |
| 133 | 136 | # # ## ### ##### ######## ############# |
| 134 | 137 | ## Internal methods |
| 135 | 138 | |
| 136 | - proc Time {pass useconds} { | |
| 139 | + proc Time {pass seconds} { | |
| 137 | 140 | ::variable mytime |
| 138 | - lappend mytime $pass $useconds | |
| 139 | - ShowTime $pass $useconds | |
| 141 | + lappend mytime $pass $seconds | |
| 142 | + ShowTime $pass $seconds | |
| 140 | 143 | return |
| 141 | 144 | } |
| 142 | 145 | |
| 143 | 146 | proc ShowTimes {} { |
| 144 | 147 | ::variable mytime |
| 145 | - foreach {pass useconds} $mytime { | |
| 146 | - ShowTime $pass $useconds | |
| 148 | + foreach {pass seconds} $mytime { | |
| 149 | + ShowTime $pass $seconds | |
| 147 | 150 | } |
| 148 | 151 | return |
| 149 | 152 | } |
| 150 | 153 | |
| 151 | - proc ShowTime {pass useconds} { | |
| 152 | - set sec [format %8.2f [expr {double($useconds)/1e6}]] | |
| 153 | - log write 0 pass "$sec sec/$pass" | |
| 154 | + proc ShowTime {pass seconds} { | |
| 155 | + log write 0 pass "[format %8d $seconds] sec/$pass" | |
| 154 | 156 | return |
| 155 | 157 | } |
| 156 | 158 | |
| 157 | 159 | proc Ok? {code label ov {emptyok 1}} { |
| 158 | 160 | upvar 1 $ov ok |
| 159 | 161 |
| --- tools/cvs2fossil/lib/c2f_pass.tcl | |
| +++ tools/cvs2fossil/lib/c2f_pass.tcl | |
| @@ -112,12 +112,15 @@ | |
| 112 | log write 0 pass "Setup $p" |
| 113 | Call $p setup |
| 114 | } |
| 115 | foreach p $run { |
| 116 | log write 0 pass "Begin $p" |
| 117 | Time $p [lindex [time {Call $p run} 1] 0] |
| 118 | log write 0 pass "Done $p" |
| 119 | trouble abort? |
| 120 | } |
| 121 | foreach p $defered { |
| 122 | log write 0 pass "Defer $p" |
| 123 | Call $p discard |
| @@ -131,28 +134,27 @@ | |
| 131 | typemethod current {} { return $mycurrentpass } |
| 132 | |
| 133 | # # ## ### ##### ######## ############# |
| 134 | ## Internal methods |
| 135 | |
| 136 | proc Time {pass useconds} { |
| 137 | ::variable mytime |
| 138 | lappend mytime $pass $useconds |
| 139 | ShowTime $pass $useconds |
| 140 | return |
| 141 | } |
| 142 | |
| 143 | proc ShowTimes {} { |
| 144 | ::variable mytime |
| 145 | foreach {pass useconds} $mytime { |
| 146 | ShowTime $pass $useconds |
| 147 | } |
| 148 | return |
| 149 | } |
| 150 | |
| 151 | proc ShowTime {pass useconds} { |
| 152 | set sec [format %8.2f [expr {double($useconds)/1e6}]] |
| 153 | log write 0 pass "$sec sec/$pass" |
| 154 | return |
| 155 | } |
| 156 | |
| 157 | proc Ok? {code label ov {emptyok 1}} { |
| 158 | upvar 1 $ov ok |
| 159 |
| --- tools/cvs2fossil/lib/c2f_pass.tcl | |
| +++ tools/cvs2fossil/lib/c2f_pass.tcl | |
| @@ -112,12 +112,15 @@ | |
| 112 | log write 0 pass "Setup $p" |
| 113 | Call $p setup |
| 114 | } |
| 115 | foreach p $run { |
| 116 | log write 0 pass "Begin $p" |
| 117 | set secbegin [clock seconds] |
| 118 | Call $p run |
| 119 | set secstop [clock seconds] |
| 120 | log write 0 pass "Done $p" |
| 121 | Time $p [expr {$secstop - $secbegin}] |
| 122 | trouble abort? |
| 123 | } |
| 124 | foreach p $defered { |
| 125 | log write 0 pass "Defer $p" |
| 126 | Call $p discard |
| @@ -131,28 +134,27 @@ | |
| 134 | typemethod current {} { return $mycurrentpass } |
| 135 | |
| 136 | # # ## ### ##### ######## ############# |
| 137 | ## Internal methods |
| 138 | |
| 139 | proc Time {pass seconds} { |
| 140 | ::variable mytime |
| 141 | lappend mytime $pass $seconds |
| 142 | ShowTime $pass $seconds |
| 143 | return |
| 144 | } |
| 145 | |
| 146 | proc ShowTimes {} { |
| 147 | ::variable mytime |
| 148 | foreach {pass seconds} $mytime { |
| 149 | ShowTime $pass $seconds |
| 150 | } |
| 151 | return |
| 152 | } |
| 153 | |
| 154 | proc ShowTime {pass seconds} { |
| 155 | log write 0 pass "[format %8d $seconds] sec/$pass" |
| 156 | return |
| 157 | } |
| 158 | |
| 159 | proc Ok? {code label ov {emptyok 1}} { |
| 160 | upvar 1 $ov ok |
| 161 |