o
    IXh                     @   s.  d dl Z d dlZd dlZdd Zdd Zdd Zdd	 Ze jd
 Zedv r:e	de  e	de d  e
ded ntedkrcee jdkrcd dlZe	de jd   e
de jd  eee jd  nKedkree jdkrd dlZe	de jd   e
de jd   n)eeereeeedreeeZe
de eee ne	de  e
de  ze  W n& ey   e
  e
d e
d e
d e
d e
d  e
d! e
   w e  ed"d#d$ ed%d&d$ ed'd(d$ ed)d*d$ ed+d,d$ ed-d.d$ ed/d0d$ ee jd1d$ ed2d3d$ dS )4    Nc                   C   s   t d)Nzeek, creatorFunc not overridden)RuntimeError r   r   ;/opt/python-3.10.19/usr/lib/python3.10/test/time_hashlib.pycreatorFunc	   s   r   c           	      C   sf   d|  d }d|  }t }t }t|D ]}|| }qt }td||  d|dt|d| d S )Nٞ       Z%2.2fsecondsxbytes)r   timeperf_counterrangedigestprintlen)	scalenameZ
iterationsZlongStrZlocalCFstartfr   endr   r   r   test_scaled_msg   s   $r   c                  C   s<   t  } tdD ]}t }qt  }td||   dd d S )N N  r	   r
   z[20000 creations])r   r   r   r   r   )r   r   dr   r   r   r   test_create   s
   r   c                  C   s@   t  } tdD ]}t  }qt  }td||   dd d S )Nr   r	   r
   z[20000 "" digests])r   r   r   r   r   r   )r   r   r   r   r   r   r   	test_zero    s
   r      )Z_md5Z_shazimport zcreatorFunc = z.newztesting speed of oldzlegacy interface_hashlib   zcreatorFunc = _hashlib.%s   ztesting speed of _hashlib.%sz+creatorFunc = lambda x=_hashlib.new : x(%r)z!testing speed of _hashlib.new(%r)__call__ztesting speed of hashlib.z*creatorFunc = lambda x=hashlib.new : x(%r)z testing speed of hashlib.new(%r)z8pass argument(s) naming the hash to run a speed test on:z6 '_md5' and '_sha' test the legacy builtin md5 and shaz= '_hashlib' 'openssl_hName' 'fast' tests the builtin _hashlibz6 '_hashlib' 'hName' tests builtin _hashlib.new(shaFOO)z> 'hName' tests the hashlib.hName() implementation if it existsz.         otherwise it uses hashlib.new(hName).r   z[huge data])r   r   i|)  z[large data]i&  z[medium data]i  z[4*small data]iP  z[3*small data]   z[2*small data]j   z[small data]z[digest_size data]
   z[tiny data])sysr   Zhashlibr   r   r   r   argvZhNameexecr   r   r   getattrhasattr
ValueErrordigest_sizer   r   r   r   <module>   s`   

"

