o
    1&i	                     @   sp   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r6e   dS 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 d    n1 sw   Y  ||jd }|d }| |tj t|}| d| | 	t
|d |d	 }| |tj | |jt | |jtj d S )
Nc                 S      d}t | D ]}||7 }q|S Nr   rangenci r   MC:\wamp64\www\opt\env\Lib\site-packages\numba/tests/test_llvm_pass_timings.pyfoo&      
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 d    n1 sw   Y  ||jd }|d }| | t | | t |	 }| 
t|t| |d j }|dd  D ]}|j }| || |}qVd 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   s   t dd }tdd |d W d    n1 sw   Y  ||jd }|d }| | d | |  | | g  d S )	Nc                 S   r   r   r	   r   r   r   r   r   g   r   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)r0   r1   r2   r4   r   r   r   r   r3   e   s    r3   __main__)ZunittestZnumbar   Znumba.tests.supportr   r   Z
numba.miscr   r   r-   r.   r   r3   r0   mainr   r   r   r   <module>   s    B