
    Ed2                        d Z ddlZddlmZ ddlmZ ddlmZm	Z
mZ ddlZddlmZ g dZg dZd	  ee          D             Zd
Z G d dej        j        j                  Z G d dej        j        j                  Z G d dej                  Z G d dej        j        j        j                  Z G d de          ZddZdS )zbenchmarking through py.test    N)Item)TerminalSession)ceilfloorlog10)	getsource)smsusns)   g     @@g    .Ag    eAc                     i | ]\  }}||	S  r   ).0ir	   s      :lib/python3.11/site-packages/sympy/testing/benchmarking.py
<dictcomp>r      s    +++$!QA+++       c                       e Zd Zd ZdS )	Directoryc                 T    |j         }|j        }|                    d          o|dk    S )Nbench_z.py)purebasenameext
startswith)selfpathbr   s       r   
filefilterzDirectory.filefilter   s,    h||H%%6#,6r   N)__name__
__module____qualname__r    r   r   r   r   r      s#        7 7 7 7 7r   r   c                       e Zd Zd ZdS )Modulec                 V    |                     d          p|                     d          S )Nr   timeit_)r   )r   names     r   funcnamefilterzModule.funcnamefilter"   s%    x((FDOOI,F,FFr   N)r!   r"   r#   r)   r   r   r   r%   r%       s(        G G G G Gr   r%   c                   6    e Zd Zdej         e            fdZdS )Timerpassc                    || _         t          j        |d          }t          j        |d          }t          j        ||dz  }|| _        t          |t          j        d          }i }t          |||           |d         | _        d S )N      )stmtsetupexecinner)	timertimeitreindenttemplatesrccompiledummy_src_namer2   r3   )r   r0   r1   r4   globalsr8   coder   s           r   __init__zTimer.__init__)   s     
tQ''q))o > >>sF16::T7B[


r   N)r!   r"   r#   r5   default_timerr;   r=   r   r   r   r+   r+   '   s8        #)1Ewwyy ! ! ! ! ! !r   r+   c                   $     e Zd Z fdZd Z xZS )Functionc                 V     t                      j        |i | d | _        d | _        d S N)superr=   	benchtime
benchtitle)r   argskw	__class__s      r   r=   zFunction.__init__:   s1    $%"%%%r   c                 
   t          |          }d                    |                                dd                    }|j        |j        | _        n1|                                d                                         | _        t          ||j                  }| j        	                    d          rd}d}t          dd          D ]s}|                    |          }|dk    r&|d|z  z  }t          t          |                    } n1|d	k    r|dz  }O|d|z  z  }t          t          |                    } t          |                    ||                    |z  | _        d S |                    d          | _        d S )
N
r   r   )r;   r'   r   
   g?g{Gz?)r   join
splitlinesfunc_docrE   stripr+   func_globalsr(   r   ranger5   int_ceilminrepeatrD   )	r   targetrF   r8   r4   rU   numberr   ts	            r   executezFunction.execute?   sy   ii))!""-// ? 	:$oDOO!nn..q17799DO c6#67779	** 	-FF1b\\  LL((8 sQw'F v//FE9 	bLFF
 sQw'F v//F ff!=!=>>GDNNN #\\!__DNNNr   )r!   r"   r#   r=   rY   __classcell__rH   s   @r   r@   r@   8   sG            
)- )- )- )- )- )- )-r   r@   c                   .     e Zd Z fdZ fdZd Z xZS )BenchSessionc                 J    t                                          |           d S rB   )rC   headerr   colitemsrH   s     r   r_   zBenchSession.headerm   s    x     r   c                     t                                          |           | j                            d           |                                  d S )NrJ   )rC   footeroutwriteprint_bench_resultsr`   s     r   rc   zBenchSession.footerp   sE    x   t  """""r   c           
      d   | j                             d           | j                             d           | j                             d           | j                             d           g }| j        D ]\  }}t          |t                    r|j        }|d}nj|dk    r<t          t          t          t          |                    dz             d          }nd}dt          |t          |         z  t          |         fz  }|                    |j        ||j        g           dgt!          t                    z  }dgt!          t                    z  }|D ]}	|	d	         }|                                \  }
}t$          |         }	 |
                    d
          \  }}n# t&          $ r |
d}}Y nw xY wt)          t!          |          ||                   ||<   t)          t!          |          ||                   ||<   |D ],}	|	d	         }|                                \  }
}t$          |         }	 |
                    d
          \  }}n# t&          $ r |
d}}Y nw xY w|                    ||                   }|                    ||                   }|                                rd
                    ||f          }
nd                    ||f          }
d}t3          t!          t                              D ](|k    r||
z  }|d|         |         z   d	z   z  z  })|d||	d	<   .t3          d          D ]@t)          fd|D                       }|D ] }	|	                             |          |	<   !A|D ],}	| j                             dt5          |	          z             -d S )Nz==============================
z *** BENCHMARKING RESULTS *** 
rJ   z---g        r   z%.*g %sr   r   .     c              3   B   K   | ]}t          |                   V  d S rB   )len)r   r	   r   s     r   	<genexpr>z3BenchSession.print_bench_results.<locals>.<genexpr>   s-      //!C!II//////r   z%s  |  %s  |  %s
)rd   re   _memo
isinstancer   rD   rT   rR   _floorr   	precisionscalingunitsappendr(   rE   rm   splitunitn
ValueErrormaxrjustljustrO   rL   rQ   tuple)r   resultsitemoutcomebesttstrorderwmwer	   nuunmetxtwr   s                    @r   rf   z BenchSession.print_bench_resultsv   s   9:::9:::9:::t !Z 	E 	EMD'$%% E~ H DD cz " #Sd)<)<)A%B%B$BA F F !$!4'%.#8%,(H HD D$/ BDDD SU^SU^ 	) 	)AQ4D::<<DAq qBwws||11   "1 QB((BrFQB((BrFF 	& 	&AQ4D::<<DAqqBwws||11   "1 2A2Awwyy %HHaV$$HHaV$$ C3u::&& 3 37 31HCC311 122CC!cc11%AaDD q 	% 	%A////w/////A % %tzz!}}!%  	< 	<AHNN/%((:;;;;	< 	<s$   F  F10F13III)r!   r"   r#   r_   rc   rf   rZ   r[   s   @r   r]   r]   k   sg        ! ! ! ! !# # # # #X< X< X< X< X< X< X<r   r]   c                     ddl m} t          |_        t          |_        t          |_        t
          j        j        }d |_        t
          j        j	        
                    |            d S )Nr   )defaultconftestc                      t           S rB   )r]   r   r   r   <lambda>zmain.<locals>.<lambda>   s    l r   )
py.__.testr   r   r%   r@   pytestconfig_getsessionclasscmdlinemain)rF   r   r   s      r   r   r      s`    ****** )O#O'O W^F22FGOr   rB   )__doc__r   py.__.test.itemr   py.__.test.terminal.terminalr   mathr   rS   r   rq   r   r5   inspectr   rt   rs   	enumeraterw   rr   r   collectr   r%   r+   __r~   r@   r]   r   r   r   r   <module>r      s   " " 				             8 8 8 8 8 8 6 6 6 6 6 6 6 6 6 6        	 


++))E**+++	7 7 7 7 7) 7 7 7G G G G GRW_# G G G! ! ! ! !FL ! ! !"0- 0- 0- 0- 0-ruz' 0- 0- 0-fc< c< c< c< c<? c< c< c<L     r   