3
�
�^O � @ s< d dl Z d dlZd dlZdd� Zdd� Zdd� Zdd � Ze jd
Zed5krte d
e � e de d � e
ded� n�edkr�ee j�dkr�d dlZe de jd � e
de jd e
ee jd �� n�edko�ee j�dk�rd dlZe de jd � e
de jd � nVeee��rJee
ee�d��rJe
ee�Ze
de e
ee�� ne de � e
de � y
e� W nT ek
�r� e
� e
d� e
d� e
d� e
d � e
d!� e
d"� e
� � Y nX e� ed#d$d%� ed&d'd%� ed(d)d%� ed*d+d%� ed,d-d%� ed.d/d%� ed0d1d%� ee� jd2d%� ed3d4d%� dS )6� Nc C s t d��d S )Nzeek, creatorFunc not overridden)�RuntimeError� r r �)/usr/lib64/python3.6/test/time_hashlib.py�creatorFunc s r c C sj d| d }d| }t }tj� }xt|�D ]}||�j� }q*W tj� }td|| d|dt|�d|� d S )Niٞ � � Zz%2.2f�seconds�x�bytes)r �time�range�digest�print�len) �scale�nameZ
iterationsZlongStrZlocalCF�start�fr �endr r r �test_scaled_msg s r c C s@ t j � } xtd�D ]
}t� }qW t j � }td|| dd� d S )Ni N z%2.2fr z[20000 creations])r r r r )r r �dr r r r �test_create s
r c C sD t j � } xtd�D ]}t� j� }qW t j � }td|| dd� d S )Ni N z%2.2fr z[20000 "" digests])r r r r
r )r r r r r r r � test_zero s
r � �_md5�_shazimport zcreatorFunc = z.newztesting speed of oldzlegacy interface�_hashlib� zcreatorFunc = _hashlib.%s� ztesting speed of _hashlib.%sz+creatorFunc = lambda x=_hashlib.new : x(%r)z!testing speed of _hashlib.new(%r)�__call__ztesting 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).iٞ 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])r r )�sysr Zhashlibr r r r �argvZhName�execr r r �getattr�hasattr�
ValueErrorZdigest_sizer r r r �<module> s\
"