Your IP : 216.73.216.213


Current Path : /proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/
Upload File :
Current File : //proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/sortperf.cpython-34.pyc

�
f f��@s�dZddlZddlZddlZddlZddlZddlZej�Zdd�Z	dd�Z
dd�Zd	d
�Zdd�Z
ed
kr�e
�ndS)z_Sort performance test.

See main() for command line syntax.
See tabulate() for output format.

�Nc s�tjjtd|�}yt|d�}Wn�tk
r
tj��fdd�t|�D�}yjz3t|d�}tj	||�|j
�d}Wd|r�ytj|�Wq�tk
r�Yq�XnXWn8tk
r}ztd|d|�WYdd}~XnXYnwXtj
|�}|j
�xZtd	�D]L}tj|�}|d|�}|d|�=|j�|j|�~q4Wt|�|ks�t�|S)
z+Return a list of n random floats in [0, 1).zrr%06d�rbcsg|]}���qS�r)�.0�i)�rr�2/opt/alt/python34/lib64/python3.4/test/sortperf.py�
<listcomp>s	zrandfloats.<locals>.<listcomp>�wbNzcan't write�:�
)�os�path�join�td�open�OSError�random�range�marshal�dump�close�unlink�print�load�	randrange�reverse�extend�len�AssertionError)�n�fn�fp�result�msgrZtempr)rr�
randfloatss<
	



+



r$cCstjj�dS)N)�sys�stdout�flushrrrrr'8sr'cCsEtj�}|j�tj�}td||dd�t�dS)Nz%6.2f�end� )�timeZperf_counter�sortrr')�LZt0Zt1rrr�doit;s

r-c
Csctdd�dD��}ddt|�}t|d|�x|D]}d|>}t|�}td	||fd
d�t�t|�|j�t|�t|�xOtd�D]A}tj	|�}tj	|�}||||||<||<q�Wt|�|d
kr9dd�td
�D�|dd�<nt|�x1t|d�D]}tj�|tj	|�<qTWt|�|dkr�|dd�=||d}t
tdd�|��}nt|�~t
ttdg|��}t|�~|d}	t
t|	ddd��}|j
t|	��t
tt|��}t|�t�qFWdS)a:Tabulate sort speed for lists of various sizes.

    The sizes are 2**i for i in r (the argument, a list).

    The output displays i, 2**i, and the time to sort arrays of 2**i
    floating point numbers with the following properties:

    *sort: random data
    \sort: descending data
    /sort: ascending data
    3sort: ascending, then 3 random exchanges
    +sort: ascending, then 10 random at the end
    %sort: ascending, then randomly replace 1% of the elements w/ random values
    ~sort: many duplicates
    =sort: all equal
    !sort: worst case scenario

    cSsg|]}|d�qS)r+r)rZchrrrrUs	ztabulate.<locals>.<listcomp>z	*\/3+%~=!z%2s %7sz %6sr�2**i�z%2d %7dr(r)�rcSsg|]}tj��qSr)r)r�dummyrrrrks	N�d�cSs|S)Nr)�xrrr�<lambda>ysztabulate.<locals>.<lambda>g�?�)rr.i����g����r7)�tuplerrr$r'r-rrrr�list�map�absr�float)
rZcasesZfmtrrr,r1Zi1Zi2Zhalfrrr�tabulateBsL





!
&






r=cCs�d}d}tjdd�r�ttjd�}}tjdd�r�ttjd�}tjdd�r�d}x/tjdd�D]}d|t|�}q�Wtj|�q�q�nt||d�}t|�dS)z�Main program when invoked as a script.

    One argument: tabulate a single row.
    Two arguments: tabulate a range (inclusive).
    Extra arguments are used to seed the random generator.

    ��r/Nr6r0i�
)r%�argv�int�hashrZseedrr=)Zk1Zk2r4�arrrr�main�s	rD�__main__)�__doc__r%r*rrZtempfilerZ
gettempdirrr$r'r-r=rD�__name__rrrr�<module>s'L