-í
è¶<c       sš   d  Z  d k Z d k Z d k Z d k Z d k Z d k Z d k Z e i ƒ  Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z e d j o e ƒ  n d S(   s_   Sort performance test.

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

Nc    s‡  t  i i t d |  ƒ } y t | d ƒ } WnÜ t j
 oÐ g  } x' t
 |  ƒ D] } | i t i ƒ  ƒ qP Wyp z3 t | d ƒ } t i | | ƒ | i ƒ  t } Wd | o. y t  i | ƒ Wn t  i j
 o n Xn XWn& t j
 o } d G| Gd G| GHn Xnv Xt i | ƒ } | i ƒ  xX t
 d ƒ D]J } t i d |  d	 ƒ } | |  } | | 4| i ƒ  | | t | ƒ )~ q1W| Sd S(
   s$   Return a random shuffle of range(n).s   rr%06ds   rbs   wbNs   can't writes   :i
   i    i   (   s   oss   paths   joins   tds   ns   fns   opens   fps   IOErrors   results   ranges   is   appends   whrandoms   randoms   marshals   dumps   closes   Nones   unlinks   errors   msgs   loads   randints   temps   reverses   len(   s   ns   fps   temps   is   results   msgs   fn(    (    s#   /usr/lib/python2.2/test/sortperf.pys	   randrange sD      

 
 

c      s   t  i i ƒ  d  S(   N(   s   syss   stdouts   flush(    (    (    s#   /usr/lib/python2.2/test/sortperf.pys   fl7 s    c    s9   t  i ƒ  } |  i ƒ  t  i ƒ  } d | | Gt ƒ  d  S(   Ns   %6.2f(   s   times   clocks   t0s   Ls   sorts   t1s   fl(   s   Ls   t1s   t0(    (    s#   /usr/lib/python2.2/test/sortperf.pys   doit: s
    
c    sK  d d d d d d f } d d t | ƒ } | d	 d
 f | GHx|  D]ý } d | >} t | ƒ } d | | f Gt ƒ  t	 | ƒ | i
 ƒ  t	 | ƒ t	 | ƒ | d j o+ | d 3| | d } t d „  | ƒ } n t	 | ƒ ~ t t d g | ƒ } t	 | ƒ t | d d d d ƒ } t | d ƒ | t | ƒ )t	 | ƒ HqF Wd S(   sŒ  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
    ~sort: many duplicates
    -sort: all equal
    !sort: worst case scenario

    s   *sorts   \sorts   /sorts   ~sorts   -sorts   !sorts   %2s %6ss    %6ss   is   2**ii   s   %2d %6di   c    s   |  S(   N(   s   x(   s   x(    (    s#   /usr/lib/python2.2/test/sortperf.pys   <lambda>a s    f-0.5i   iÿÿÿÿN(   s   casess   lens   fmts   rs   is   ns	   randranges   Ls   fls   doits   reverses   maps   abss   range(   s   rs   is   fmts   Ls   ns   cases(    (    s#   /usr/lib/python2.2/test/sortperf.pys   tabulateA s4      







c  	   sE  d } d } t i d o
t t i d ƒ } } t i d oá t t i d ƒ } t i d o¼ d d d f \ } } } xŠ t i d D]{ }  t	 |  ƒ } t | d ƒ \ } } | d @} | | A| Ad	 @} | d
 ?} | | A| Ad	 @} | d
 ?} | | A| Ad	 @} q† Wt i | | | ƒ n n n t | | d ƒ } t | ƒ d S(   sÂ   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.

    i   i   i   i   i   i    i   iÿÿÿ iÿ   i   N(   s   k1s   k2s   syss   argvs   ints   xs   ys   zs   as   hashs   hs   divmods   ds   whrandoms   seeds   ranges   rs   tabulate(	   s   as   ds   hs   k2s   k1s   rs   ys   xs   z(    (    s#   /usr/lib/python2.2/test/sortperf.pys   maink s,      


s   __main__(   s   __doc__s   syss   times   whrandoms   marshals   tempfiles   operators   oss
   gettempdirs   tds	   randranges   fls   doits   tabulates   mains   __name__(   s   whrandoms   doits	   randranges   tempfiles   oss   syss   times   operators   tds   mains   fls   marshals   tabulate(    (    s#   /usr/lib/python2.2/test/sortperf.pys   ? s   								%			*	!