bg*dZddlmZddlmZdZdZedd\ZZ Z Z Z Gdd e ZdZdZefd Zefd Zdaead ad adgd zadt.gd zDadadaefdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&e'dkrddl(Z(dZ)e*e(j+dz Z,e,dkre)de,znCe,dkr;e-e(j+dZ.n&#e/$re)de(j+dzYnwxYweZ.ee.dSdS) 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)clockiPz1.1c eZdZ ddZdZdS)RecordNrcL||_||_||_||_||_dSN)PtrCompDiscrEnumCompIntComp StringComp)selfr r r rrs n/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/future/backports/test/pystone.py__init__zRecord.__init__/s)     $cZt|j|j|j|j|jSr )rr r r rr)rs rcopyz Record.copy7s)dlDJ lDO55 5r)Nrrrr)__name__ __module__ __qualname__rrrrrr-s==>12%%%%55555rrct|\}}tdt||fztd|zdS)Nz#Pystone(%s) time for %d passes = %gz-This machine benchmarks at %g pystones/second)pystonesprint __version__)loops benchtimestoness rmainr!>sP Iv / y ) *+++ 9F BCCCCCrc t|Sr )Proc0)rs rrrEs <<r3c"g|] }|dd Sr r).0xs r r)Ms , , ,qad , , ,rNct}t|D]}t|z }tatatt_t t_tt_ dt_ dt_ d}dtdd<t}t|D]}ttd}d}d }t}t!|| a||kr#d |z|z } t%||} |d z}||k#t't(t|| t+tad } | t,krR|t/| d krt1t }t3t5| d z} | t,kR||z} | |z }d| |z z|z }t7|}t|z |z } | dkrd} n|| z } | | fS)N(zDHRYSTONE PROGRAM, SOME STRINGzDHRYSTONE PROGRAM, 1'ST STRING zDHRYSTONE PROGRAM, 2'ND STRINGrACg)rranger PtrGlbNextPtrGlbr Ident1r Ident3r rr Array2GlobProc5Proc4Ident2Func2BoolGlobProc7Proc8 Array1GlobProc1 Char2GlobFunc1Proc6chrordProc2) r starttimeinulltime String1LocIntLoc1IntLoc2 String2LocEnumLocIntLoc3 CharIndexrloopsPerBenchtimes rr#r#QsI 5\\   ww"HJ XXFFNFLFOFN8F1JJqM!I 5\\!!  5 Z444'kG+GGW--GkG j*gw777v 9$$% 3////--C NN1,--I9$$G#G#w()G3..)#h.IC"Y. ' ''rctx|_}d|_|j|_|j|_t |j|_|jt krLd|_t|j|_tj|_t|jd|_n|}d|_|S)Nr1rr,) r6rr rProc3r r7rEr r?)PtrParIn NextRecords rrBrBs$*KKMM1HzH!)J!)Jz122J6!! #H$566 #^ ":#5r:: ??$$J Orcn|dz} tdkr|dz }|tz }t}|tkrn.|S)Nr,rr2) Char1GlobIntGlobr7)IntParIOIntLocrPs rrHrHsM ]F   aZF'HG f     Orcpt tj}ndatdtt_|S)Ndr,)r6r rZr?r) PtrParOuts rrUrUs/N 2w''FN rc2tdk}|pt}dadS)Nr2B)rYr>rC)BoolLocs rr;r;s!3G!GIIIrcdatadS)Nr2)rYFALSEr>rrrr:r:sIHHHrc |}t|st}|tkrt}nW|tkrtdkrt}n9t}n1|t krt}n|tkrn|t krt }|S)Nr^)Func3Ident4r7r<rZr8Ident5) EnumParIn EnumParOuts rrErEsJ    F f   S==JJJJ f   f   f   rc|dz}||z}|S)Nr/r)IntParI1IntParI2r\ IntParOuts rr?r?s \F6!I rc|dz}|||<||||dz<|||dz<t||dzD] }||||<|||dz dz|||dz <||||dz|<dadS)Nr1rr/)r4rZ) Array1Par Array2Parrlrmr\IntIndexs rr@r@s\F If#F+IfQh!IfRi&&(++--&, &(##"+F"3F1H"="AIffQh#,V#4IfRi GGGrc2|}|}||krtStSr )r7r<)CharPar1CharPar2CharLoc1CharLoc2s rrDrDs!HH8  rcd}|dkr5t||||dztkrd}|dz}|dk5|dkr|dkrd}|dkrtS||kr |dz}tStS)Nrr2WZr.X)rDr7TRUErd)StrParI1StrParI2r\CharLocs rr=r=s F A++ &!8F1H#5 6 6& @ @GaZF A++#~~'S..#~~ h  aZFKLrc8|}|tkrtStSr )r8r~rd)rirPs rrfrfsG&+ Lr__main__ct|dtjtdtjdztjtjddS)N )endfilezusage: %s [number_of_loops]r)rr^)rsysstderrargvexit)msgs rerrorrsK cs,,,, +chqk9 KKKK  rz%d arguments are too many;zInvalid argument %r;)0__doc__ __future__rtimerLOOPSrr4r7r<r8rgrhobjectrr~rdr!rrZr>rYrCrAr9r6r5r#rBrHrUr;r:rEr?r@rDr=rfrrrlenrnargsintr ValueErrorrrrrs@&%%%%%  +05A;;( 5 5 5 5 5V 5 5 5  DDDD     SV , ,ZLO , , ,   8(8(8(8(t   &   "  zJJJ CMMA E qyy *U23333 !S!%%UU 8 8 8 E(38A;6 7 7 7 7 7 8DKKKKKs C DD