
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
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rªe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ƒršt|| 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| ƒpŠd}d}g }t}	d}
d }ddddœ}d‰ � xè|D � ]Þ\}}|d8krÒt|ƒ}|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r¸ttd)d*� dS q¸W dj|ƒ�pªd}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�rÌP �qÌW 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