3
�
�^O c @ 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 )6i Nc C s t d��d S )Nzeek, creatorFunc not overridden)ZRuntimeError� 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 )N�ٞ i s Z�%2.2f�seconds�xZbytes)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 )N� N r r z[20000 creations])r r r r
)r r Zdr r r r �test_create s
r c C sD t j � } xtd�D ]}t� j� }qW t j � }td|| dd� d S )Nr r r z[20000 "" digests])r r r r r
)r r r r r r r � test_zero s
r i �_md5�_shazimport zcreatorFunc = z.newztesting speed of oldzlegacy interface�_hashlibi zcreatorFunc = _hashlib.%si ztesting speed of _hashlib.%sz+creatorFunc = lambda x=_hashlib.new : x(%r)z!testing speed of _hashlib.new(%r)Z__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).r z[huge data])r r
i|) z[large data]i& z
[medium data]i� z[4*small data]iP z[3*small data]i� z[2*small data]ij z[small data]z[digest_size data]i
z[tiny data])r r )Zsysr Zhashlibr r r r ZargvZhNameZexecr
r r ZgetattrZhasattrZ
ValueErrorZdigest_sizer r r r Z<module> s\
"