???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5d4                     @   s   d dl Z d dlZd dlZd dlZddddgZdZdZdZejZ	e
Zd	Zd
d ZG dd dZdde	edfddZdde	eedfddZdddddZedkree  dS )    NTimertimeitrepeatdefault_timerz<timeit-src>i@B    z
def inner(_it, _timer{init}):
    {setup}
    _t0 = _timer()
    for _i in _it:
        {stmt}
    _t1 = _timer()
    return _t1 - _t0
c                 C   s   |  ddd|  S )N
 )replace)srcindent r   /usr/lib64/python3.8/timeit.pyreindentO   s    r   c                   @   sL   e Zd ZddedfddZdddZefddZeefd	d
Z	dddZ
dS )r   passNc                 C   s   || _ i }|d krt n|}d}t|trJt|td |d }t|d}n*t|rl||d< |d7 }d}d}ntdt|trt|| td t|d	}n&t|r||d
< |d7 }d}ntdt	j
|||d}	|	| _t|	td}
t|
|| |d | _d S )N execr      _setupz, _setup=_setupz_setup()z&setup is neither a string nor callable   Z_stmtz, _stmt=_stmtz_stmt()z%stmt is neither a string nor callable)stmtsetupinitinner)timer_globals
isinstancestrcompiledummy_src_namer   callable
ValueErrortemplateformatr
   r   r   )selfr   r   r   globalsZlocal_nsZ	global_nsr   Z
stmtprefixr
   coder   r   r   __init__e   s6    

zTimer.__init__c                 C   sJ   dd l }dd l}| jd k	r:t| jd | jdtf|jt< |j|d d S )Nr   r   file)	linecache	tracebackr
   lensplitr   cache	print_exc)r#   r(   r)   r*   r   r   r   r.      s    


zTimer.print_excc                 C   sB   t d |}t }t  z| || j}W 5 |r<t  X |S N)	itertoolsr   gcZ	isenabledZdisableZenabler   r   )r#   numberitZgcoldZtimingr   r   r   r      s    

zTimer.timeitc                 C   s*   g }t |D ]}| |}|| q|S r/   )ranger   append)r#   r   r2   ritr   r   r   r      s
    
zTimer.repeatc                 C   sP   d}dD ]8}|| }|  |}|r,||| |dkr||f  S q|d9 }qd S )N   )r9      r   g?
   )r   )r#   callbackr7   jr2   
time_takenr   r   r   	autorange   s    


zTimer.autorange)N)N)__name__
__module____qualname__r   r&   r.   default_numberr   default_repeatr   r?   r   r   r   r   r   S   s   
#
r   c                 C   s   t | ||||S r/   )r   r   )r   r   r   r2   r$   r   r   r   r      s    c                 C   s   t | |||||S r/   )r   r   )r   r   r   r   r2   r$   r   r   r   r      s    )_wrap_timerc                   s  | d krt jdd  } dd l}z(|| ddddddd	d
ddg	\}} W n: |jk
r } zt| td W Y dS d }~X Y nX t}d| pd}d g }t}d}	d dddddd|D ]\}
}|
dkrt| |
dkr|	| |
dkr|kr|ntdt j
d  dS |
dkr6t|}|dkr6d}|
dkrFtj}|
dkrf|	r^d7 |	d7 }	|
dkrttd d!  dS qd|pd}dd l}t jd|j |d k	r||}t|||} dkrd }|	rfd"d#}z||\ }W n   |  Y dS X |	rt  z|| }W n   |  Y dS X fd$d%}|	rztd&d't||  t   fd(d)|D }t|}td*  dkrd+nd,|||f  t|}t|}||d- kr dd l}|d.||||f td,d d S )/Nr9   r   zn:u:s:r:tcpvhznumber=zsetup=zrepeat=timeZclockZprocessverbosezunit=helpz#use -h/--help for command line helpr:   r   r   g&.>gư>gMbP?g      ?)ZnsecZusecZmsecZsec   )z-nz--number)z-sz--setup)z-uz--unitz:Unrecognized unit. Please select nsec, usec, msec, or sec.r'   )z-rz--repeat)z-pz	--process)z-vz	--verbose)z-hz--helpr   )endc                    s.   d}| dk}t |j| |rdnd| d d S )Nz%{num} loop{s} -> {secs:.{prec}g} secsr9   sr   )ZnumrK   ZsecsZprec)printr"   )r2   r>   msgZplural)	precisionr   r   r<   ?  s     zmain.<locals>.callbackc                    s`   }|d k	r| }n8dd   D }|jdd |D ]\}}| |kr8 qNq8d | | |f S )Nc                 S   s   g | ]\}}||fqS r   r   ).0unitscaler   r   r   
<listcomp>Y  s     z-main.<locals>.format_time.<locals>.<listcomp>T)reversez%.*g %s)itemssort)dtrP   rQ   Zscales)rN   	time_unitunitsr   r   format_timeS  s    
zmain.<locals>.format_timezraw times: %sz, c                    s   g | ]}|  qS r   r   )rO   rV   )r2   r   r   rR   d  s     zmain.<locals>.<listcomp>z"%d loop%s, best of %d: %s per looprK   r   r   ztThe test results are likely unreliable. The worst time (%s) was more than four times slower than the best time (%s).)sysargvgetopterrorrL   r   joinrD   intr5   stderrrF   process_time__doc__ospathinsertcurdirr   r?   r.   r   mapminmaxwarningswarn_explicitUserWarning)argsrE   r\   Zoptserrr   r   r   r   rG   oarc   r8   r<   _Zraw_timingsrY   ZtimingsZbestZworstrj   r   )r2   rN   rW   rX   r   main   s        








   rr   __main__)N)r1   rZ   rF   r0   __all__r   rC   rD   perf_counterr   r$   r   r!   r   r   r   r   rr   r@   exitr   r   r   r   <module>4   s4   
  
  
 