ó
\K]c           @  sĻ   d  d l  m Z d  d l Z d  d l j Z d  d l m Z m	 Z	 m
 Z
 d  d l m Z d   Z d   Z d   Z d e j f d	     YZ e d
 k rĪ e j   n  d S(   iĸĸĸĸ(   t   print_functionN(   t   compilert   typest   utils(   t   registryc         C  s   |  S(   N(    (   t   x(    (    s7   lib/python2.7/site-packages/numba/tests/test_wrapper.pyt   overhead
   s    c         C  s   d |  d <d |  d <d  S(   Ni   i    i   (    (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_wrapper.pyt   array_overhead   s    
c         C  s   |  |  |  |  |  S(   N(    (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_wrapper.pyt   add   s    t   TestWrapperc           B  s#   e  Z d    Z d   Z d   Z RS(   c           sÏ   t  j t t j g  } | j   t j t    j |  d   f d   }    f d   }   f d   } t	 t  t	 t
 j | d d  t	 t
 j | d d  t	 t
 j | d d  d S(   sW   
        This will show higher overhead due to unboxing in the native version.
        iA  c             s   t     d  S(   N(   R   (    (   R   (    s7   lib/python2.7/site-packages/numba/tests/test_wrapper.pyt   python#   s    c             s       d  S(   N(    (    (   t   cfuncR   (    s7   lib/python2.7/site-packages/numba/tests/test_wrapper.pyt   pycfunc&   s    c             s       d  S(   N(    (    (   t   dispR   (    s7   lib/python2.7/site-packages/numba/tests/test_wrapper.pyt
   overloaded)   s    t   maxsecg      ā?N(   R   t   compile_isolatedR   R   t   int32t   entry_pointR   t   CPUDispatchert   add_overloadt   printR   t	   benchmark(   t   selft   crR
   R   R   (    (   R   R   R   s7   lib/python2.7/site-packages/numba/tests/test_wrapper.pyt   test_overhead   s    	
c           s  t  j t t j d d d  g  } | j   t j t    j |  |  j	 | j
 j d j d  t j d d d d    f d	   }    f d
   }   f d   } t t  t t j | d d  t t j | d d  t t j | d d  d S(   s   
        The time to set two array element seems to be more expensive than
        the overhead of the overloaded call.
        Ni   i    t   Ct   shapei   t   dtypeR   c             s   t     d  S(   N(   R   (    (   R   (    s7   lib/python2.7/site-packages/numba/tests/test_wrapper.pyR
   ?   s    c             s       d  S(   N(    (    (   R   R   (    s7   lib/python2.7/site-packages/numba/tests/test_wrapper.pyR   B   s    c             s       d  S(   N(    (    (   R   R   (    s7   lib/python2.7/site-packages/numba/tests/test_wrapper.pyR   E   s    R   g      ā?(   R   R   R   R   R   R   R   R   R   t   assertEqualt	   signaturet   argst   layoutt   npt   zerosR   R   R   (   R   R   R
   R   R   (    (   R   R   R   s7   lib/python2.7/site-packages/numba/tests/test_wrapper.pyt   test_array_overhead1   s    %	
c           sÏ   t  j t t j g  } | j   t j t    j |  d   f d   }    f d   }   f d   } t	 t  t	 t
 j | d d  t	 t
 j | d d  t	 t
 j | d d  d S(   su   
        This seems to be about the amount of work to balance out the overhead
        by the overloaded one
        iA  c             s   t     d  S(   N(   R   (    (   R   (    s7   lib/python2.7/site-packages/numba/tests/test_wrapper.pyR
   Z   s    c             s       d  S(   N(    (    (   R   R   (    s7   lib/python2.7/site-packages/numba/tests/test_wrapper.pyR   ]   s    c             s       d  S(   N(    (    (   R   R   (    s7   lib/python2.7/site-packages/numba/tests/test_wrapper.pyR   `   s    R   g      ā?N(   R   R   R   R   R   R   R   R   R   R   R   R   (   R   R   R
   R   R   (    (   R   R   R   s7   lib/python2.7/site-packages/numba/tests/test_wrapper.pyt   test_addN   s    	
(   t   __name__t
   __module__R   R#   R$   (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_wrapper.pyR	      s   		t   __main__(   t
   __future__R    t   numpyR!   t   numba.unittest_supportt   unittest_supportt   unittestt   numbaR   R   R   t   numba.targetsR   R   R   R   t   TestCaseR	   R%   t   main(    (    (    s7   lib/python2.7/site-packages/numba/tests/test_wrapper.pyt   <module>   s   			S