
    Fwg                        d Z ddlmZ ddlmZ dZdZ edd      \  ZZ	Z
ZZ G d d	e      ZdZdZefd
ZefdZdaeadadadgdz  at.        gdz  D  cg c]  } | dd 	 c} adadaef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(  rSddl(Z(d Z) e*e(jV                        dz
  Z,e,dkD  r e)de,z         ne,dk(  r e-e(jV                  d         Z.neZ. ee.       yyc c} w # e/$ r  e)de(jV                  d   z         Y .w xY w)a  
"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.

    )print_function)clockiP  z1.1      c                       e Zd Z	 	 ddZd Zy)RecordNc                 J    || _         || _        || _        || _        || _        y N)PtrCompDiscrEnumCompIntComp
StringComp)selfr   r   r   r   r   s         T/var/www/horilla/myenv/lib/python3.12/site-packages/future/backports/test/pystone.py__init__zRecord.__init__/   s%    
 $    c                     t        | j                  | j                  | j                  | j                  | j
                        S r
   )r   r   r   r   r   r   )r   s    r   copyzRecord.copy7   s.    dllDJJllDOO5 	5r   )Nr   r   r   r   )__name__
__module____qualname__r   r    r   r   r   r   -   s    =>12%5r   r   c                 f    t        |       \  }}t        dt        | |fz         t        d|z         y )Nz#Pystone(%s) time for %d passes = %gz-This machine benchmarks at %g pystones/second)pystonesprint__version__)loops	benchtimestoness      r   mainr!   >   s8     Iv	
/y
)* +	
9F
BCr   c                     t        |       S r
   )Proc0)r   s    r   r   r   E   s    <r    3   Nc                 V   t               }t        |       D ]  } t               |z
  }t               at               at        t        _        t        t        _        t        t        _	        dt        _
        dt        _        d}dt        d   d<   t               }t        |       D ]  }t                t                d}d}d	}t        }t!        ||       a||k  rd
|z  |z
  }	t%        ||      }	|dz   }||k  rt'        t(        t        |	       t+        t              ad}
|
t,        k  r?|t/        |
d      k(  rt1        t              }t3        t5        |
      dz         }
|
t,        k  r?||z  }	|	|z  }d|	|z
  z  |z
  }t7        |      } t               |z
  |z
  }|dk(  rd}||fS | |z  }||fS )N(   zDHRYSTONE PROGRAM, SOME STRINGzDHRYSTONE PROGRAM, 1'ST STRING
               zDHRYSTONE PROGRAM, 2'ND STRING   r   ACg        )r   ranger   
PtrGlbNextPtrGlbr   Ident1r   Ident3r   r   r   
Array2GlobProc5Proc4Ident2Func2BoolGlobProc7Proc8
Array1GlobProc1	Char2GlobFunc1Proc6chrordProc2)r   	starttimeinulltime
String1LocIntLoc1IntLoc2
String2LocEnumLocIntLoc3	CharIndexr   loopsPerBenchtimes                r   r#   r#   Q   s    I5\ w"HJXFFNFLFOFN8F1JJqM!I5\ !5
Z44'kG+GGW-GkG  	j*gw7v	9$%	3//-C	N1,-I 9$ G#G#w()G3.-!0 )#h.IC ''' #Y.'''r   c                    t         j                         x| _        }d| _        | j                  |_        | j                  |_        t	        |j                        |_        |j
                  t        k(  rRd|_        t        | j                        |_        t         j                  |_        t        |j                  d      |_        n|j                         } d |_        | S )Nr-   r   r(   )
r2   r   r   r   Proc3r   r3   rA   r   r;   )PtrParIn
NextRecords     r   r>   r>      s    $*KKM1HzH!))J!))Jz112J6!
#H$5$56
#^^
":#5#5r:
??$JOr   c                 b    | dz   }	 t         dk(  r|dz
  }|t        z
  } t        }t        k(  r	 | S *)Nr(   r   r.   )	Char1GlobIntGlobr3   )IntParIOIntLocrL   s      r   rD   rD      sC    ]F
aZF'HGfO r   c                 j    t         t         j                  } ndat        dt              t         _        | S )Nd   r(   )r2   r   rV   r;   r   )	PtrParOuts    r   rQ   rQ      s,     NN	2w'FNr   c                  .    t         dk(  } | xs t        } day )Nr.   B)rU   r:   r?   )BoolLocs    r   r7   r7      s     3G!GIr   c                      da t        ay )Nr.   )rU   FALSEr:   r   r   r   r6   r6      s     IHr   c                     | }t        |       st        }| t        k(  rt        }|S | t        k(  rt        dkD  rt        }|S t        }|S | t
        k(  rt        }|S | t        k(  r	 |S | t        k(  rt
        }|S )NrZ   )Func3Ident4r3   r8   rV   r4   Ident5)	EnumParIn
EnumParOuts     r   rA   rA      s    J
F
  
f	S=J   J  
f	

 	 
f	  
f	
r   c                     | dz   }||z   }|S )Nr+   r   )IntParI1IntParI2rX   	IntParOuts       r   r;   r;      s    \F6!Ir   c                     |dz   }|| |<   | |   | |dz   <   || |dz   <   t        ||dz         D ]
  }|||   |<    ||   |dz
     dz   ||   |dz
  <   | |   ||dz      |<   day )Nr-   r      r+      )r0   rV   )	Array1Par	Array2Parrh   ri   rX   IntIndexs         r   r<   r<      s     \F If#F+IfQh!IfRi&&(+ -&,	&(#-"+F"3F1H"="AIffQh#,V#4IfRi Gr   c                 ,    | }|}||k7  rt         S t        S r
   )r3   r8   )CharPar1CharPar2CharLoc1CharLoc2s       r   r@   r@      s    HH8r   c                     d}|dk  r)t        | |   ||dz            t        k(  rd}|dz   }|dk  r)dk\  r|dk  rd}|dk(  rt        S | |kD  r|dz   }t        S t        S )Nr   r.   WZr*   X)r@   r3   TRUEr`   )StrParI1StrParI2rX   CharLocs       r   r9   r9      s}    F
A+&!8F1H#56&@GaZF A+ #~'S.#~haZFKLr   c                 0    | }|t         k(  rt        S t        S r
   )r4   rz   r`   )re   rL   s     r   rb   rb      s    G&+Lr   __main__c                     t        | dt        j                         t        dt        j                  d   z  t        j                         t        j                  d       y )N )endfilezusage: %s [number_of_loops]r   )r   rZ   )r   sysstderrargvexit)msgs    r   errorr     s9    cs,+chhqk9

Kr   z%d arguments are too many;zInvalid argument %r;)0__doc__
__future__r   timer   LOOPSr   r0   r3   r8   r4   rc   rd   objectr   rz   r`   r!   r   rV   r:   rU   r?   r=   r5   r2   r1   r#   r>   rD   rQ   r7   r6   rA   r;   r<   r@   r9   rb   r   r   r   lenr   nargsintr   
ValueError)xs   0r   <module>r      sx  @ & +0A; (5V 5 		 D   		SV
'LO,qad,
	
 8(t 	&
"
 z MAEqy*U23	!!%U K i -~  	8(388A;67	8s   C'C, ,DD