44"""
55import time
66import numpy as np
7+ from ..timings .timings import get_default_precision
78
89
910class __Timer__ :
@@ -39,7 +40,7 @@ def tic(self):
3940 self .start = t
4041 self .last = t
4142
42- def tac (self , verbose = True , digits = 2 ):
43+ def tac (self , verbose = True , digits = None ):
4344 """
4445 Return and print elapsed time since last `tic()`, `tac()`, or
4546 `toc()`.
@@ -49,8 +50,9 @@ def tac(self, verbose=True, digits=2):
4950 verbose : bool, optional(default=True)
5051 If True, then prints time.
5152
52- digits : scalar(int), optional(default=2)
53- Number of digits printed for time elapsed.
53+ digits : scalar(int), optional(default=None)
54+ Number of digits printed for time elapsed. If None, uses
55+ the global default precision from quantecon.timings.
5456
5557 Returns
5658 -------
@@ -61,6 +63,9 @@ def tac(self, verbose=True, digits=2):
6163 if self .start is None :
6264 raise Exception ("tac() without tic()" )
6365
66+ if digits is None :
67+ digits = get_default_precision ()
68+
6469 t = time .time ()
6570 elapsed = t - self .last
6671 self .last = t
@@ -73,7 +78,7 @@ def tac(self, verbose=True, digits=2):
7378
7479 return elapsed
7580
76- def toc (self , verbose = True , digits = 2 ):
81+ def toc (self , verbose = True , digits = None ):
7782 """
7883 Return and print time elapsed since last `tic()`.
7984
@@ -82,8 +87,9 @@ def toc(self, verbose=True, digits=2):
8287 verbose : bool, optional(default=True)
8388 If True, then prints time.
8489
85- digits : scalar(int), optional(default=2)
86- Number of digits printed for time elapsed.
90+ digits : scalar(int), optional(default=None)
91+ Number of digits printed for time elapsed. If None, uses
92+ the global default precision from quantecon.timings.
8793
8894 Returns
8995 -------
@@ -94,6 +100,9 @@ def toc(self, verbose=True, digits=2):
94100 if self .start is None :
95101 raise Exception ("toc() without tic()" )
96102
103+ if digits is None :
104+ digits = get_default_precision ()
105+
97106 t = time .time ()
98107 self .last = t
99108 elapsed = t - self .start
@@ -106,7 +115,7 @@ def toc(self, verbose=True, digits=2):
106115
107116 return elapsed
108117
109- def loop_timer (self , n , function , args = None , verbose = True , digits = 2 ,
118+ def loop_timer (self , n , function , args = None , verbose = True , digits = None ,
110119 best_of = 3 ):
111120 """
112121 Return and print the total and average time elapsed for n runs
@@ -126,8 +135,9 @@ def loop_timer(self, n, function, args=None, verbose=True, digits=2,
126135 verbose : bool, optional(default=True)
127136 If True, then prints average time.
128137
129- digits : scalar(int), optional(default=2)
130- Number of digits printed for time elapsed.
138+ digits : scalar(int), optional(default=None)
139+ Number of digits printed for time elapsed. If None, uses
140+ the global default precision from quantecon.timings.
131141
132142 best_of : scalar(int), optional(default=3)
133143 Average time over best_of runs.
@@ -141,6 +151,9 @@ def loop_timer(self, n, function, args=None, verbose=True, digits=2,
141151 Average of best_of times for n runs of function.
142152
143153 """
154+ if digits is None :
155+ digits = get_default_precision ()
156+
144157 tic ()
145158 all_times = np .empty (n )
146159 for run in range (n ):
@@ -190,8 +203,9 @@ class Timer:
190203 ----------
191204 message : str, optional(default="")
192205 Custom message to display with timing results.
193- precision : int, optional(default=2)
194- Number of decimal places to display for seconds.
206+ precision : int, optional(default=None)
207+ Number of decimal places to display for seconds. If None, uses
208+ the global default precision from quantecon.timings.
195209 unit : str, optional(default="seconds")
196210 Unit to display timing in. Options: "seconds", "milliseconds", "microseconds"
197211 verbose : bool, optional(default=True)
@@ -208,13 +222,13 @@ class Timer:
208222 >>> with Timer():
209223 ... # some code
210224 ... pass
211- 0.00 seconds elapsed
225+ 0.0000 seconds elapsed
212226
213227 With custom message and precision:
214- >>> with Timer("Computing results", precision=4 ):
228+ >>> with Timer("Computing results", precision=6 ):
215229 ... # some code
216230 ... pass
217- Computing results: 0.0001 seconds elapsed
231+ Computing results: 0.000001 seconds elapsed
218232
219233 Store elapsed time for comparison:
220234 >>> timer = Timer(verbose=False)
@@ -225,9 +239,9 @@ class Timer:
225239 Method took 0.000123 seconds
226240 """
227241
228- def __init__ (self , message = "" , precision = 2 , unit = "seconds" , verbose = True ):
242+ def __init__ (self , message = "" , precision = None , unit = "seconds" , verbose = True ):
229243 self .message = message
230- self .precision = precision
244+ self .precision = precision if precision is not None else get_default_precision ()
231245 self .unit = unit .lower ()
232246 self .verbose = verbose
233247 self .elapsed = None
@@ -347,7 +361,7 @@ def timeit(func, runs=1, stats_only=False, verbose=True, results=False, **timer_
347361 # Extract Timer parameters
348362 timer_params = {
349363 'message' : timer_kwargs .pop ('message' , '' ),
350- 'precision' : timer_kwargs .pop ('precision' , 2 ),
364+ 'precision' : timer_kwargs .pop ('precision' , None ), # None will use global default
351365 'unit' : timer_kwargs .pop ('unit' , 'seconds' ),
352366 'verbose' : timer_kwargs .pop ('verbose' , True ) # Timer verbose parameter
353367 }
@@ -376,7 +390,7 @@ def timeit(func, runs=1, stats_only=False, verbose=True, results=False, **timer_
376390 if show_output and not stats_only :
377391 # Convert to requested unit for display
378392 unit = timer_params ['unit' ].lower ()
379- precision = timer_params ['precision' ]
393+ precision = timer_params ['precision' ] if timer_params [ 'precision' ] is not None else get_default_precision ()
380394
381395 if unit == "milliseconds" :
382396 elapsed_display = timer .elapsed * 1000
@@ -399,7 +413,7 @@ def timeit(func, runs=1, stats_only=False, verbose=True, results=False, **timer_
399413 if show_output :
400414 # Convert to requested unit for display
401415 unit = timer_params ['unit' ].lower ()
402- precision = timer_params ['precision' ]
416+ precision = timer_params ['precision' ] if timer_params [ 'precision' ] is not None else get_default_precision ()
403417
404418 if unit == "milliseconds" :
405419 avg_display = average * 1000
@@ -442,15 +456,15 @@ def tic():
442456 return __timer__ .tic ()
443457
444458
445- def tac (verbose = True , digits = 2 ):
459+ def tac (verbose = True , digits = None ):
446460 return __timer__ .tac (verbose , digits )
447461
448462
449- def toc (verbose = True , digits = 2 ):
463+ def toc (verbose = True , digits = None ):
450464 return __timer__ .toc (verbose , digits )
451465
452466
453- def loop_timer (n , function , args = None , verbose = True , digits = 2 , best_of = 3 ):
467+ def loop_timer (n , function , args = None , verbose = True , digits = None , best_of = 3 ):
454468 return __timer__ .loop_timer (n , function , args , verbose , digits , best_of )
455469
456470
0 commit comments