???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3

  \4                 @   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j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   | j ddd|  S )N
 )replace)srcindent r   /usr/lib64/python3.6/timeit.pyreindentP   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__f   s6    

zTimer.__init__c             C   sJ   dd l }dd l}| jd k	r:t| jd | j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 jd |}tj }tj  z| j|| j}W d |r<tj  X |S )N)	itertoolsr   gc	isenableddisabler   r   enable)r#   numberitZgcoldZtimingr   r   r   r      s    

zTimer.timeitc             C   s.   g }x$t |D ]}| j|}|j| qW |S )N)ranger   append)r#   r   r3   ritr   r   r   r      s
    
zTimer.repeatc             C   sF   x<t ddD ].}d| }| j|}|r0||| |dkrP qW ||fS )N   
   g?)r5   r   )r#   callbackr8   r3   
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   T   s   "
r   c             C   s   t | |||j|S )N)r   r   )r   r   r   r3   r$   r   r   r   r      s    c             C   s   t | |||j||S )N)r   r   )r   r   r   r   r3   r$   r   r   r   r      s    )_wrap_timerc                s^  | d krt jdd  } dd l}y(|j| ddddddd	d
ddg	\}} W n2 |jk
rx } zt| td dS d }~X nX t}dj| pd}d}g }t}	d}
d }dddd}d  x|D  ]\}}|d8krt|}|d9kr|j	| |d:kr||k r|}ntdt j
d dS |d;kr0t|}	|	dkr0d}	|d<kr@tj}|d=krPtj}|d>kr`tj}|d?kr|
rx d7  |
d7 }
|d@krttd)d* dS qW dj|pd}dd l}t jjd|j |d k	r||}t|||}|dkr(d }|
r fd+d,}y|j|\}}W n   |j  dS y|j|	|}W n   |j  dS t|}|
rxtd-d)j fd.d/|D  td0| d)d* |d | }|d k	r|| }n>d1d/ |j D }|jd2d3 x|D ]\}}||krP qW td4|	 || |f  t|}|d | }t|}||d5 krZ|d | }dd l}|jd6 || |f td7d d S )ANr:   r   zn:u:s:r:tcpvhznumber=zsetup=zrepeat=timeclockZprocessverbosezunit=helpz#use -h/--help for command line help   r   r   g     @@g    .A)usecZmsecZsecr   -n--number-s--setup-u--unitz4Unrecognized unit. Please select usec, msec, or sec.)r'   -r--repeat-t--time-c--clock-p	--process-v	--verbose-h--helpr   )endc                s   d}t |j| | d d S )Nz#{num} loops -> {secs:.{prec}g} secs)ZnumZsecsZprec)printr"   )r3   r=   msg)	precisionr   r   r<   @  s    zmain.<locals>.callbackz
raw times:c                s   g | ]}d  |f qS )z%.*gr   ).0x)r`   r   r   
<listcomp>O  s    zmain.<locals>.<listcomp>z	%d loops,c             S   s   g | ]\}}||fqS r   r   )ra   Zunitscaler   r   r   rc   U  s    T)reversezbest of %d: %.*g %s per loopr   ztThe test results are likely unreliable. The worst
time (%.*g %s) was more than four times slower than the best time.r   )rK   rL   )rM   rN   )rO   rP   )rQ   rR   )rS   rT   )rU   rV   )rW   rX   )rY   rZ   )r[   r\   )sysargvgetopterrorr^   r   joinrC   intr6   stderrrE   rF   Zprocess_time__doc__ospathinsertcurdirr   r>   r-   r   minitemssortmaxwarningswarn_explicitUserWarning)argsrD   rh   Zoptserrr   r   r3   r   r   rG   Z	time_unitZunitsoarn   r9   r<   _r7   ZbestrJ   rd   ZscalesZworstrv   r   )r`   r   main   s    















r~   __main__)N)r/   rf   rE   r.   __all__r   rB   rC   Zperf_counterr   r$   r   r!   r   r   r   r   r~   r?   exitr   r   r   r   <module>5   s(    y