
    ܙda	                         d dl Zd dlZd dlmZmZmZmZ d Zd Z	d Z
 G d dej                  Zedk    r ej                     dS dS )	    N)typesutilscompilerregistryc                     | S N xs    8lib/python3.11/site-packages/numba/tests/test_wrapper.pyoverheadr      s    H    c                     d| d<   d| d<   d S )N   r      r	   r
   s    r   array_overheadr      s    AaDAaDDDr   c                     | | z   | z   | z   | z   S r   r	   r
   s    r   addr      s    q519q=1r   c                        e Zd Zd Zd Zd ZdS )TestWrapperc                    t          j        t          t          j        g          }|j        t          j        t                                        |           dfd}fd}fd}t          t                     t          t          j        |d                     t          t          j        |d                     t          t          j        |d                     dS )zW
        This will show higher overhead due to unboxing in the native version.
        A  c                  &    t                      d S r   )r   r
   s   r   pythonz)TestWrapper.test_overhead.<locals>.python    s    QKKKKKr   c                                   d S r   r	   cfuncr   s   r   pycfuncz*TestWrapper.test_overhead.<locals>.pycfunc#       E!HHHHHr   c                                   d S r   r	   dispr   s   r   
overloadedz-TestWrapper.test_overhead.<locals>.overloaded&       DGGGGGr         ?maxsecN)r   compile_isolatedr   r   int32entry_pointr   CPUDispatcheradd_overloadprintr   	benchmarkselfcrr   r   r#   r   r"   r   s        @@@r   test_overheadzTestWrapper.test_overhead   s    &x%+??%h//"	 	 	 	 		 	 	 	 	 		 	 	 	 	 	 	heofR000111eogb111222eoj44455555r   c                 p   t          j        t          t          j        ddd         g          }|j        t          j        t                                        |           | 	                    |j
        j        d         j        d           t          j        dd          fd}fd	}fd
}t          t                     t          t!          j        |d                     t          t!          j        |d                     t          t!          j        |d                     dS )z
        The time to set two array element seems to be more expensive than
        the overhead of the overloaded call.
        Nr   r   Cr   r)   )shapedtypec                  &    t                      d S r   )r   r
   s   r   r   z/TestWrapper.test_array_overhead.<locals>.python<   s    1r   c                                   d S r   r	   r   s   r   r   z0TestWrapper.test_array_overhead.<locals>.pycfunc?   r   r   c                                   d S r   r	   r!   s   r   r#   z3TestWrapper.test_array_overhead.<locals>.overloadedB   r$   r   r%   r&   )r   r(   r   r   r)   r*   r   r+   r,   assertEqual	signatureargslayoutnpzerosr-   r   r.   r/   s        @@@r   test_array_overheadzTestWrapper.test_array_overhead.   sM   
 &~CCaC8H7IJJ%n55"*1-4c:::H1G,,,	 	 	 	 		 	 	 	 	 		 	 	 	 	 	 	neofR000111eogb111222eoj44455555r   c                    t          j        t          t          j        g          }|j        t          j        t                                        |           dfd}fd}fd}t          t                     t          t          j        |d                     t          t          j        |d                     t          t          j        |d                     dS )zu
        This seems to be about the amount of work to balance out the overhead
        by the overloaded one
        r   c                  &    t                      d S r   )r   r
   s   r   r   z$TestWrapper.test_add.<locals>.pythonW   s    FFFFFr   c                                   d S r   r	   r   s   r   r   z%TestWrapper.test_add.<locals>.pycfuncZ   r   r   c                                   d S r   r	   r!   s   r   r#   z(TestWrapper.test_add.<locals>.overloaded]   r$   r   r%   r&   N)r   r(   r   r   r)   r*   r   r+   r,   r-   r   r.   r/   s        @@@r   test_addzTestWrapper.test_addK   s   
 &sU[M::%c**"	 	 	 	 		 	 	 	 	 		 	 	 	 	 	 	c


eofR000111eogb111222eoj44455555r   N)__name__
__module____qualname__r2   r@   rE   r	   r   r   r   r      sA        6 6 626 6 6:6 6 6 6 6r   r   __main__)numpyr>   unittest
numba.corer   r   r   r   r   r   r   TestCaser   rF   mainr	   r   r   <module>rO      s         7 7 7 7 7 7 7 7 7 7 7 7    
  O6 O6 O6 O6 O6(# O6 O6 O6f zHMOOOOO r   