U
    ,‰d  ã                   @   sl   d dl Z d dlmZ d dlmZmZ d dlmZ dZ	dZ
G dd„ deƒZG d	d
„ d
eƒZedkrhe  ¡  dS )é    N)Únjit)ÚTestCaseÚoverride_config)Úllvm_pass_timingsaZ  
===-------------------------------------------------------------------------===
                      ... Pass execution timing report ...
===-------------------------------------------------------------------------===
  Total Execution Time: 0.0001 seconds (0.0001 wall clock)

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   0.0001 ( 90.1%)   0.0001 ( 90.1%)   0.0001 ( 90.1%)   0.0001 ( 90.1%)  A1
   0.0000 (  9.9%)   0.0000 (  9.9%)   0.0000 (  9.9%)   0.0000 (  9.9%)  A2
   0.0001 (100.0%)   0.0001 (100.0%)   0.0001 (100.0%)   0.0001 (100.0%)  Total

aZ  
===-------------------------------------------------------------------------===
                      ... Pass execution timing report ...
===-------------------------------------------------------------------------===
  Total Execution Time: 0.0001 seconds (0.0001 wall clock)

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   0.0001 ( 90.1%)        -----        0.0001 ( 90.1%)   0.0001 ( 90.1%)  A1
   0.0000 (  9.9%)        -----        0.0000 (  9.9%)   0.0000 (  9.9%)  A2
   0.0001 (100.0%)        -----        0.0001 (100.0%)   0.0001 (100.0%)  Total

c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestLLVMPassTimingsc              	   C   s¬   t dd„ ƒ}tddƒ |dƒ W 5 Q R X | |jd ¡}|d }|  |tj¡ t|ƒ}|  d|¡ |  	t
|ƒd¡ |d	 }|  |tj¡ |  |jt¡ |  |jtj¡ d S )
Nc                 S   s   d}t | ƒD ]}||7 }q|S ©Nr   ©Úrange©ÚnÚcÚi© r   úF/tmp/pip-unpacked-wheel-eu7e0c37/numba/tests/test_llvm_pass_timings.pyÚfoo&   s    
z+TestLLVMPassTimings.test_usage.<locals>.fooÚLLVM_PASS_TIMINGSTé
   r   r   z!Module passes (full optimization)éÿÿÿÿ)r   r   Úget_metadataÚ
signaturesÚassertIsInstanceÚlptZPassTimingsCollectionÚstrZassertInZassertGreaterÚlenZNamedTimingsÚnameÚtimingsÚProcessedPassTimings)Úselfr   Úmdr   ÚtextÚlastr   r   r   Ú
test_usage%   s    
zTestLLVMPassTimings.test_usagec              	   C   s¼   t dd„ ƒ}tddƒ |dƒ W 5 Q R X | |jd ¡}|d }|  | ¡ t¡ |  | ¡ t¡ | 	¡ }|  
t|ƒt|ƒ¡ |d j ¡ }|dd … D ]}|j ¡ }|  ||¡ |}q˜d S )	Nc                 S   s,   d}t | ƒD ]}t |ƒD ]}||7 }qq|S r   r   )r   r   r   Újr   r   r   r   A   s
    z-TestLLVMPassTimings.test_analyze.<locals>.foor   Tr   r   r   é   )r   r   r   r   r   Úget_total_timeÚfloatÚsummaryr   Úlist_longest_firstÚassertEqualr   r   ZassertGreaterEqual)r   r   r   Ztimings_collectionZlongest_firstr    ZrecÚcurr   r   r   Útest_analyze@   s    

z TestLLVMPassTimings.test_analyzec                 C   sX   t  t¡}|  | ¡ d¡ |  | ¡ t¡ t  t¡}|  | ¡ d¡ |  | ¡ t¡ d S )Ng-Cëâ6?)	r   r   Útimings_raw1ZassertAlmostEqualr$   r   r&   r   Útimings_raw2)r   Ztimings1Ztimings2r   r   r   Útest_parse_raw[   s    

z"TestLLVMPassTimings.test_parse_rawN)Ú__name__Ú
__module__Ú__qualname__r!   r*   r-   r   r   r   r   r   #   s   r   c                   @   s   e Zd Zdd„ ZdS )ÚTestLLVMPassTimingsDisabledc              	   C   st   t dd„ ƒ}tddƒ |dƒ W 5 Q R X | |jd ¡}|d }|  | ¡ d¡ |  | ¡ ¡ |  | ¡ g ¡ d S )	Nc                 S   s   d}t | ƒD ]}||7 }q|S r   r   r
   r   r   r   r   g   s    
z?TestLLVMPassTimingsDisabled.test_disabled_behavior.<locals>.foor   Fr   r   r   zNo pass timings were recorded)	r   r   r   r   r(   r&   ZassertIsNoner$   r'   )r   r   r   r   r   r   r   Útest_disabled_behaviorf   s    
z2TestLLVMPassTimingsDisabled.test_disabled_behaviorN)r.   r/   r0   r2   r   r   r   r   r1   e   s   r1   Ú__main__)ZunittestZnumbar   Znumba.tests.supportr   r   Z
numba.miscr   r   r+   r,   r   r1   r.   Úmainr   r   r   r   Ú<module>   s   B