-í
è¶<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
 7 d „  Z : d „  Z A d „  Z k 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 ƒ  ƒ qh W y‘  z?  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 Xn” X* t i | ƒ } + | i ƒ  . xm t
 d ƒ D. ]\ } / t i d |  d	 ƒ } 0 | |  } 1 | | 42 | i ƒ  3 | | t | ƒ )4 ~ q‚W5 | 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   7 8 t  i i ƒ  d  S(   N(   s   syss   stdouts   flush(    (    (    s#   /usr/lib/python2.2/test/sortperf.pys   fl7 s   c    sK   : ; t  i ƒ  } < |  i ƒ  = t  i ƒ  } > d | | G? t ƒ  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    sœ  A P Q d d d d d d f } R d d t | ƒ } S | d	 d
 f | GHT xD|  DT ]9} U d | >} V t | ƒ } X d | | f GY t ƒ  Z t	 | ƒ [ | i
 ƒ  \ t	 | ƒ ] t	 | ƒ ^ | d j o4 _ | d 3` | | d } a t d „  | ƒ } n b t	 | ƒ c ~ d t t d g | ƒ } e t	 | ƒ f t | d d d d ƒ } g t | d ƒ | t | ƒ )h t	 | ƒ i HqX 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	   a |  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  	   sŠ  k r t d } u d } v t i d o:x t t i d ƒ } } y 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§ Wˆ t 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   %*!