Your IP : 172.28.240.42


Current Path : /usr/lib/python2.7/test/
Upload File :
Current File : //usr/lib/python2.7/test/pystone.pyc


|_c@sdZdZddlmZdZedd\ZZZZ	Z
dd dYZdZd	Z
ed
ZedZd	ae
adadad	gd
aedtgd
adadaedZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%e&dkrddl'Z'dZ(e)e'j*dZ+e+dkre(de+nUe+dkrye,e'j*dZ-Wqe.k
re(de'j*dqXneZ-ee-ndS(!s
"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.

iPi(tclocks1.1iitRecordcBs)eZddddddZdZRS(icCs1||_||_||_||_||_dS(N(tPtrComptDiscrtEnumComptIntCompt
StringComp(tselfRRRRR((s"/usr/lib/python2.7/test/pystone.pyt__init__-s
				cCs%t|j|j|j|j|jS(N(RRRRRR(R((s"/usr/lib/python2.7/test/pystone.pytcopy5sN(t__name__t
__module__tNoneRR	(((s"/usr/lib/python2.7/test/pystone.pyR+s	icCs1t|\}}dt||fGHd|GHdS(Ns#Pystone(%s) time for %d passes = %gs-This machine benchmarks at %g pystones/second(tpystonest__version__(tloopst	benchtimetstones((s"/usr/lib/python2.7/test/pystone.pytmain<scCs
t|S(N(tProc0(R((s"/usr/lib/python2.7/test/pystone.pyR
Csti3cCs|S(N((tx((s"/usr/lib/python2.7/test/pystone.pyt<lambda>Ksc
Cst}xt|D]}qWt|}tatatt_tt_tt_	dt_
dt_d}dtdd<t}x(t|D]}t
td}d}d	}t}t||ax7||krd
||}	t||}	|d}qWttt||	ttad}
xJ|
tkr}|t|
d
krdtt}ntt|
d}
q4W||}	|	|}d|	||}t|}qWt||}|dkrd}n
||}||fS(Ni(sDHRYSTONE PROGRAM, SOME STRINGsDHRYSTONE PROGRAM, 1'ST STRINGi
iiiisDHRYSTONE PROGRAM, 2'ND STRINGiitAtCg(RtrangeRt
PtrGlbNexttPtrGlbRtIdent1RtIdent3RRRt
Array2GlobtProc5tProc4tIdent2tFunc2tBoolGlobtProc7tProc8t
Array1GlobtProc1t	Char2GlobtFunc1tProc6tchrtordtProc2(
Rt	starttimetitnulltimet
String1LoctIntLoc1tIntLoc2t
String2LoctEnumLoctIntLoc3t	CharIndexRtloopsPerBenchtime((s"/usr/lib/python2.7/test/pystone.pyROsT
	
								

	
cCstj|_}d|_|j|_|j|_t|j|_|jtkrd|_t|j|_tj|_t	|jd|_n|j}d|_|S(Niii
(RR	RRtProc3RRR*RR$R(tPtrParInt
NextRecord((s"/usr/lib/python2.7/test/pystone.pyR's			cCsM|d}x<tdkr6|d}|t}t}n|tkr
Pq
q
|S(Ni
Ri(t	Char1GlobtIntGlobR(tIntParIOtIntLocR5((s"/usr/lib/python2.7/test/pystone.pyR-s


	cCs4tdk	rtj}ndatdtt_|S(Nidi
(RRRR=R$R(t	PtrParOut((s"/usr/lib/python2.7/test/pystone.pyR9s
cCs"tdk}|pt}dadS(NRtB(R<R#R((tBoolLoc((s"/usr/lib/python2.7/test/pystone.pyR scCsdatadS(NR(R<tFALSER#(((s"/usr/lib/python2.7/test/pystone.pyRscCs|}t|st}n|tkr0t}nc|tkrZtdkrQt}qt}n9|tkrot}n$|tkr~n|tkrt}n|S(Nid(tFunc3tIdent4RR!R=RtIdent5(t	EnumParInt
EnumParOut((s"/usr/lib/python2.7/test/pystone.pyR*s 						cCs|d}||}|S(Ni((tIntParI1tIntParI2R?t	IntParOut((s"/usr/lib/python2.7/test/pystone.pyR$s

cCs|d}|||<||||d<|||d<x)t||dD]}||||<qHW|||dd|||d<||||d|<dadS(Niiiii(RR=(t	Array1Part	Array2ParRIRJR?tIntIndex((s"/usr/lib/python2.7/test/pystone.pyR%s

"cCs$|}|}||krtStSdS(N(RR!(tCharPar1tCharPar2tCharLoc1tCharLoc2((s"/usr/lib/python2.7/test/pystone.pyR)s
cCsd}xD|dkrLt||||dtkr	d}|d}q	q	W|dkrn|dkrnd}n|dkr~tS||kr|d}tStSdS(NiRtWtZitX(R)RtTRUERC(tStrParI1tStrParI2R?tCharLoc((s"/usr/lib/python2.7/test/pystone.pyR"s!	
cCs|}|tkrtStS(N(RRVRC(RGR5((s"/usr/lib/python2.7/test/pystone.pyRDst__main__NcCs6tj|ItjdtjdIJtjddS(Nsusage: %s [number_of_loops]iid(tsyststderrtargvtexit(tmsg((s"/usr/lib/python2.7/test/pystone.pyterrors
s%d arguments are too many;sInvalid argument %r;((/t__doc__tLOOPSttimeRRRRR!RRERFRRVRCRR
R=R#R<R(R&tmapRRRRRR'R-R9R RR*R$R%R)R"RDR
R[R`tlenR]tnargstintRt
ValueError(((s"/usr/lib/python2.7/test/pystone.pyt<module>!sT
: