‡Æ
GNö9c       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 r } | i t i ƒ  ƒ qR 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 Xnx Xt i | ƒ } | i ƒ  xZ t
 d ƒ d rJ } t i d |  d	 ƒ } | |  } | | 4| i ƒ  | | t | ƒ )~ q5W| Sd S(
   s$   Return a random shuffle of range(n).s   rr%06ds   rbi    s   wbNs   can't writes   :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   fns   fps   results   is   msgs   temps*   /mit/python/lib/python2.0/test/sortperf.pys	   randrange sD      

 
 

c      s   t  i i ƒ  d  S(   N(   s   syss   stdouts   flush(    s*   /mit/python/lib/python2.0/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   t0s   t1s*   /mit/python/lib/python2.0/test/sortperf.pys   doit: s
    
c    sP  d d d d d d f } d d t | ƒ } | d	 d
 f | GHx
|  d r } 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	 | ƒ HqH 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    i   s   %2d %6di   c    s   |  S(   N(   s   x(   s   xs*   /mit/python/lib/python2.0/test/sortperf.pys   <lambda>a s    f0.5i   N(   s   casess   lens   fmts   rs   is   ns	   randranges   Ls   fls   doits   reverses   maps   abss   range(   s   rs   casess   fmts   is   ns   Ls*   /mit/python/lib/python2.0/test/sortperf.pys   tabulateA s4     	 







c  
   sV  d k  }  d } d } t i d o|  i t i d ƒ } } t i d oæ |  i t i d ƒ } t i d o¾ d d d f \ } } } xŒ t i d d r{ } 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.

    Ni   i   i   i   i   i    i   iÿÿÿ iÿ   i   (   s   strings   k1s   k2s   syss   argvs   atois   xs   ys   zs   as   hashs   hs   divmods   ds   whrandoms   seeds   ranges   rs   tabulate(
   s   strings   k1s   k2s   xs   ys   zs   as   hs   ds   rs*   /mit/python/lib/python2.0/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*   /mit/python/lib/python2.0/test/sortperf.pys   ? s   								%			*	"