
    4pf                     *   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d t.          gdz  D             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    rddl(Z(d Z) e*e(j+                  dz
  Z,e,dk    r e)de,z             nCe,dk    r; e-e(j+        d                   Z.n&# e/$ r  e)de(j+        d         z             Y nw xY weZ. ee.           dS dS ) 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dS )RecordNr   c                 L    || _         || _        || _        || _        || _        d S N)PtrCompDiscrEnumCompIntComp
StringComp)selfr   r   r   r   r   s         ]/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/future/backports/test/pystone.py__init__zRecord.__init__/   s)    
 $    c                 Z    t          | j        | j        | j        | j        | j                  S r
   )r   r   r   r   r   r   )r   s    r   copyzRecord.copy7   s)    dlDJlDO5 5 	5r   )Nr   r   r   r   )__name__
__module____qualname__r   r    r   r   r   r   -   s=        =>12% % % %5 5 5 5 5r   r   c                     t          |           \  }}t          dt          | |fz             t          d|z             d S )Nz#Pystone(%s) time for %d passes = %gz-This machine benchmarks at %g pystones/second)pystonesprint__version__)loops	benchtimestoness      r   mainr!   >   sP     Iv	
/y
)* + + +	
9F
BCCCCCr   c                      t          |           S r
   )Proc0)r   s    r   r   r   E   s    <<r    3   c                 "    g | ]}|d d          S r
   r   ).0xs     r   
<listcomp>r)   M   s     ,,,qad,,,r   Nc                    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     #t'          t(          t          ||	           t+          t                    ad}
|
t,          k    rR|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}n| |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\\  ww"HJXXFFNFLFOFN8F1JJqM!I5\\ ! !5
Z444'kG+GGW--GkG  	j*gw777v	9$$%	3////--C	NN1,--I 9$$ G#G#w()G3..)#h.IC"Y.'''r   c                    t                                           x| _        }d| _        | j        |_        | j        |_        t	          |j                  |_        |j        t          k    rLd|_        t          | j                  |_        t           j        |_        t          |j        d          |_        n|                                } d |_        | S )Nr1   r   r,   )
r6   r   r   r   Proc3r   r7   rE   r   r?   )PtrParIn
NextRecords     r   rB   rB      s    $*KKMM1HzH!)J!)Jz122J6!!
#H$566
#^
":#5r::
??$$JOr   c                 n    | dz   }	 t           dk    r|dz
  }|t          z
  } t          }|t          k    rn.| S )Nr,   r   r2   )	Char1GlobIntGlobr7   )IntParIOIntLocrP   s      r   rH   rH      sM    ]FaZF'HGf Or   c                 p    t           t           j        } ndat          dt                    t           _        | S )Nd   r,   )r6   r   rZ   r?   r   )	PtrParOuts    r   rU   rU      s/     N		2w''FNr   c                  2    t           dk    } | pt          } dad S )Nr2   B)rY   r>   rC   )BoolLocs    r   r;   r;      s!     3G!GIIIr   c                      da t          ad S )Nr2   )rY   FALSEr>   r   r   r   r:   r:      s     IHHHr   c                 
   | }t          |           st          }| t          k    rt          }nW| t          k    rt          dk    rt          }n9t          }n1| t
          k    rt          }n| t          k    rn| t          k    rt
          }|S )Nr^   )Func3Ident4r7   r<   rZ   r8   Ident5)	EnumParIn
EnumParOuts     r   rE   rE      s    J 
F

	f		S==JJJJ	f		

	f			f		
r   c                     | dz   }||z   }|S )Nr/   r   )IntParI1IntParI2r\   	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d S )Nr1   r      r/      )r4   rZ   )	Array1Par	Array2Parrl   rm   r\   IntIndexs         r   r@   r@      s     \F If#F+IfQh!IfRi&&(++ - -&,	&(##"+F"3F1H"="AIffQh#,V#4IfRi GGGr   c                 2    | }|}||k    rt           S t          S r
   )r7   r<   )CharPar1CharPar2CharLoc1CharLoc2s       r   rD   rD      s!    HH8r   c                     d}|dk    r5t          | |         ||dz                      t          k    rd}|dz   }|dk    5|dk    r|dk    rd}|dk    rt          S | |k    r|dz   }t          S t          S )Nr   r2   WZr.   X)rD   r7   TRUErd   )StrParI1StrParI2r\   CharLocs       r   r=   r=      s    F
A++&!8F1H#566&@@GaZF A++ #~~'S..#~~haZFKLr   c                 8    | }|t           k    rt          S t          S r
   )r8   r~   rd   )ri   rP   s     r   rf   rf      s    G&+Lr   __main__c                     t          | dt          j                   t          dt          j        d         z  t          j                   t          j        d           d S )N )endfilezusage: %s [number_of_loops]r   )r   r^   )r   sysstderrargvexit)msgs    r   errorr     sK    cs,,,,+chqk9
KKKKr   z%d arguments are too many;zInvalid argument %r;)0__doc__
__future__r   timer   LOOPSr   r4   r7   r<   r8   rg   rh   objectr   r~   rd   r!   r   rZ   r>   rY   rC   rA   r9   r6   r5   r#   rB   rH   rU   r;   r:   rE   r?   r@   rD   r=   rf   r   r   r   lenr   nargsintr   
ValueErrorr   r   r   <module>r      s   @ & % % % % %      +05A;; (5 5 5 5 5V 5 5 5 		 D D D D      		SV
,,ZLO,,,
	
 8( 8( 8( 8(t   	 	 	        &  
      "  
 zJJJ   CMMAEqyy*U23333	!S!%%UU 	8 	8 	8E(38A;677777	8 DKKKKK s   	C   D D