equal
deleted
inserted
replaced
139 (** timing **) |
139 (** timing **) |
140 |
140 |
141 (*global timing mode*) |
141 (*global timing mode*) |
142 val timing = ref false; |
142 val timing = ref false; |
143 |
143 |
144 (*a conditional timing function: applies f to () and, if the flag is true, |
144 (*conditional timing*) |
145 prints its runtime on warning channel*) |
|
146 fun cond_timeit flag f = |
145 fun cond_timeit flag f = |
147 if flag then |
146 if flag then |
148 let val start = start_timing () |
147 let |
149 val result = f () |
148 val start = start_timing (); |
|
149 val result = f (); |
150 in warning (end_timing start); result end |
150 in warning (end_timing start); result end |
151 else f (); |
151 else f (); |
152 |
152 |
153 (*unconditional timing function*) |
153 (*unconditional timing*) |
154 fun timeit x = cond_timeit true x; |
154 fun timeit x = cond_timeit true x; |
155 |
155 |
156 (*timed application function*) |
156 (*timed application function*) |
157 fun timeap f x = timeit (fn () => f x); |
157 fun timeap f x = timeit (fn () => f x); |
158 fun timeap_msg s f x = (warning s; timeap f x); |
158 fun timeap_msg s f x = (warning s; timeap f x); |