;
Ëâ"Ic               @   só  d  Z  d Z d d l m Z d Z e d d ƒ \ Z Z Z Z	 Z
 Gd „  d ƒ Z d Z d Z e d	 „ Z e d
 „ Z d a e a d a d a d g d a e e d „  t g d ƒ ƒ a d a d a e d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& e' d k o¯ d d l( Z( d „  Z) e* e( j+ ƒ d Z, e, d k o e) d e, ƒ n[ e, d k oG y e- e( j+ d ƒ Z. Wqáe/ k
 o e) d e( j+ d ƒ YqáXn e Z. e e. ƒ n d S(   uâ  
"PYSTONE" Benchmark Program

Version:        Python/1.1 (corresponds to C/1.1 plus 2 Pystone fixes)

Author:         Reinhold P. Weicker,  CACM Vol 27, No 10, 10/84 pg. 1013.

                Translated from ADA to C by Rick Richardson.
                Every method to preserve ADA-likeness has been used,
                at the expense of C-ness.

                Translated from C to Python by Guido van Rossum.

Version History:

                Version 1.1 corrects two bugs in version 1.0:

                First, it leaked memory: in Proc1(), NextRecord ends
                up having a pointer to itself.  I have corrected this
                by zapping NextRecord.PtrComp at the end of Proc1().

                Second, Proc3() used the operator != to compare a
                record to None.  This is rather inefficient and not
                true to the intention of the original benchmark (where
                a pointer comparison to None is intended; the !=
                operator attempts to find a method __cmp__ to do value
                comparison of the record).  Version 1.1 runs 5-10
                percent faster than version 1.0, so benchmark figures
                of different versions can't be compared directly.

iPÃ  i    (   u   clocku   1.1i   i   c             B   s/   |  Ee  Z d d  d  d  d  d „ Z d „  Z d S(   i    c             C   s1   | |  _  | |  _ | |  _ | |  _ | |  _ d  S(   N(   u   PtrCompu   Discru   EnumCompu   IntCompu
   StringComp(   u   selfu   PtrCompu   Discru   EnumCompu   IntCompu
   StringComp(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   __init__-   s
    				c             C   s%   t  |  j |  j |  j |  j |  j ƒ S(   N(   u   Recordu   PtrCompu   Discru   EnumCompu   IntCompu
   StringComp(   u   self(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   copy5   s    N(   u   __name__u
   __module__u   Noneu   __init__u   copy(   u
   __locals__(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   Record+   s   
	u   Recordc             C   s;   t  |  ƒ \ } } t d t |  | f ƒ t d | ƒ d  S(   Nu#   Pystone(%s) time for %d passes = %gu-   This machine benchmarks at %g pystones/second(   u   pystonesu   printu   __version__(   u   loopsu	   benchtimeu   stones(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   main<   s    c             C   s
   t  |  ƒ S(   N(   u   Proc0(   u   loops(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   pystonesC   s    u    i3   c             C   s   |  d  d  … S(   N(    (   u   x(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   <lambda>K   s    c             C   sö  t  ƒ  } x t |  ƒ D] } q Wt  ƒ  | } t ƒ  a t ƒ  a t t _ t t _ t t _	 d t _
 d t _ d } d t d d <t  ƒ  } x.t |  ƒ D] } t ƒ  t ƒ  d } d } d	 } t } t | | ƒ a x9 | | k  o+ d
 | | }	 t | | ƒ }	 | d } qÕ Wt t t | |	 ƒ t t ƒ a d }
 xN |
 t k o@ | t |
 d ƒ k o t t ƒ } n t t |
 ƒ d ƒ }
 q6W| | }	 |	 | } d |	 | | } t | ƒ } q– Wt  ƒ  | | } | d k o
 d } n |  | } | | f S(   Ni(   u   DHRYSTONE PROGRAM, SOME STRINGu   DHRYSTONE PROGRAM, 1'ST STRINGi
   i   i   i   i   u   DHRYSTONE PROGRAM, 2'ND STRINGi   i   u   Au   Cg        (   u   clocku   rangeu   Recordu
   PtrGlbNextu   PtrGlbu   PtrCompu   Ident1u   Discru   Ident3u   EnumCompu   IntCompu
   StringCompu
   Array2Globu   Proc5u   Proc4u   Ident2u   Func2u   BoolGlobu   Proc7u   Proc8u
   Array1Globu   Proc1u	   Char2Globu   Func1u   Proc6u   chru   ordu   Proc2(   u   loopsu	   starttimeu   iu   nulltimeu
   String1Locu   IntLoc1u   IntLoc2u
   String2Locu   EnumLocu   IntLoc3u	   CharIndexu	   benchtimeu   loopsPerBenchtime(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   Proc0O   s\    
	 								   



c             C   s¯   t  j ƒ  |  _ } d |  _ |  j | _ |  j | _ t | j ƒ | _ | j t k o@ d | _ t |  j ƒ | _ t  j | _ t	 | j d ƒ | _ n | j ƒ  }  d  | _ |  S(   Ni   i   i
   (   u   PtrGlbu   copyu   PtrCompu   IntCompu   Proc3u   Discru   Ident1u   Proc6u   EnumCompu   Proc7u   None(   u   PtrParInu
   NextRecord(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   Proc1‰   s    			c             C   sQ   |  d } x@ t  d k o | d } | t }  t } n | t k o Pq q |  S(   Ni
   u   Ai   (   u	   Char1Globu   IntGlobu   Ident1(   u   IntParIOu   IntLocu   EnumLoc(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   Proc2™   s    



c             C   s6   t  d  k	 o t  j }  n d a t d t ƒ t  _ |  S(   Nid   i
   (   u   PtrGlbu   Noneu   PtrCompu   IntGlobu   Proc7u   IntComp(   u	   PtrParOut(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   Proc3¤   s
    c              C   s#   t  d k }  |  p t }  d a d  S(   Nu   Au   B(   u	   Char1Globu   BoolGlobu	   Char2Glob(   u   BoolLoc(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   Proc4®   s    c               C   s   d a  t a d  S(   Nu   A(   u	   Char1Globu   FALSEu   BoolGlob(    (    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   Proc5µ   s    c             C   s¥   |  } t  |  ƒ p
 t } n |  t k o
 t } nn |  t k o! t d k o
 t } q¡ t } n@ |  t k o
 t } n) |  t k o n |  t k o
 t } n | S(   Nid   (   u   Func3u   Ident4u   Ident1u   Ident2u   IntGlobu   Ident3u   Ident5(   u	   EnumParInu
   EnumParOut(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   Proc6¼   s     





c             C   s   |  d } | | } | S(   Ni   (    (   u   IntParI1u   IntParI2u   IntLocu	   IntParOut(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   Proc7Ï   s    

c             C   s¢   | d } | |  | <|  | |  | d <| |  | d <x) t  | | d ƒ D] } | | | | <qH W| | | d d | | | d <|  | | | d | <d a d  S(   Ni   i   i   i   i   (   u   rangeu   IntGlob(   u	   Array1Paru	   Array2Paru   IntParI1u   IntParI2u   IntLocu   IntIndex(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   Proc8Ô   s    

 "c             C   s&   |  } | } | | k o t  St Sd  S(   N(   u   Ident1u   Ident2(   u   CharPar1u   CharPar2u   CharLoc1u   CharLoc2(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   Func1á   s
    c             C   s«   d } xH | d k o: t  |  | | | d ƒ t k o d } | d } q	 q	 W| d k o | d k o
 d } n | d k o t S|  | k o | d } t St Sd  S(   Ni   u   Au   Wu   Zi   u   X(   u   Func1u   Ident1u   TRUEu   FALSE(   u   StrParI1u   StrParI2u   IntLocu   CharLoc(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   Func2é   s     "

c             C   s   |  } | t  k o t St S(   N(   u   Ident3u   TRUEu   FALSE(   u	   EnumParInu   EnumLoc(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   Func3ú   s     u   __main__Nc             C   sH   t  |  d d d t j ƒt  d t j d d t j ƒt j d ƒ d  S(   Nu   endu    u   fileu   usage: %s [number_of_loops]i    id   (   u   printu   sysu   stderru   argvu   exit(   u   msg(    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   error  s    u   %d arguments are too many;u   Invalid argument %r;(0   u   __doc__u   LOOPSu   timeu   clocku   __version__u   rangeu   Ident1u   Ident2u   Ident3u   Ident4u   Ident5u   Recordu   TRUEu   FALSEu   mainu   pystonesu   IntGlobu   BoolGlobu	   Char1Globu	   Char2Globu
   Array1Globu   listu   mapu
   Array2Globu   Noneu   PtrGlbu
   PtrGlbNextu   Proc0u   Proc1u   Proc2u   Proc3u   Proc4u   Proc5u   Proc6u   Proc7u   Proc8u   Func1u   Func2u   Func3u   __name__u   sysu   erroru   lenu   argvu   nargsu   intu   loopsu
   ValueError(    (    (    u)   /mit/python/lib/python3.0/test/pystone.pyu   <module>!   sT   :			
									 