<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    A[                 @   s  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	 d	eZdZdZefd
dZefddZdaeadadadgd add tgd D adadaefddZdd Zdd Zdd Zdd Zdd Z dd  Z!d!d" Z"d#d$ Z#d%d& Z$d'd( Z%d)d* Z&e'd+krddl(Z(d,d- Z)e*e(j+d Z,e,dkrBe)d.e,  nLe,dkrye-e(j+d Z.W n( e/k
r   e)d/e(j+d   Y nX neZ.ee. dS )0a  
"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               @   s   e Zd ZdddZdd ZdS )RecordNr   c             C   s"   || _ || _|| _|| _|| _d S )N)PtrCompDiscrEnumCompIntComp
StringComp)selfr   r   r	   r
   r    r   N/opt/alt/python37/lib/python3.7/site-packages/future/backports/test/pystone.py__init__/   s
    zRecord.__init__c             C   s   t | j| j| j| j| jS )N)r   r   r   r	   r
   r   )r   r   r   r   copy7   s    zRecord.copy)Nr   r   r   r   )__name__
__module____qualname__r   r   r   r   r   r   r   -   s    
r   c             C   s.   t | \}}tdt| |f  td|  d S )Nz#Pystone(%s) time for %d passes = %gz-This machine benchmarks at %g pystones/second)pystonesprint__version__)loops	benchtimeZstonesr   r   r   main>   s    r   c             C   s   t | S )N)Proc0)r   r   r   r   r   E   s    r    3   c             C   s   g | ]}|d d  qS )Nr   ).0xr   r   r   
<listcomp>M   s    r   Nc             C   sp  t  }xt| D ]}qW t  | }t at att_tt_tt_	dt_
dt_d}dtd d< t  }xt| D ]}t  t  d}d}d	}t}t|| ax*||k rd
| | }	t||}	|d }qW ttt||	 ttad}
x6|
tkr|t|
dkrtt}tt|
d }
qW || }	|	| }d|	|  | }t|}qlW t  | | }|dkr`d}n| | }||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   Z	starttimeiZnulltimeZ
String1LocZIntLoc1ZIntLoc2Z
String2LocEnumLocZIntLoc3Z	CharIndexr   ZloopsPerBenchtimer   r   r   r   Q   sT    




r   c             C   sv   t   | _}d| _| j|_| j|_t|j|_|jtkrdd|_t| j|_t j|_t	|jd|_n| } d |_| S )Nr&   r   r!   )
r+   r   r   r
   Proc3r   r,   r:   r	   r4   )ZPtrParInZ
NextRecordr   r   r   r7      s    
r7   c             C   s8   | d }x*t dkr&|d }|t } t}|tkr
P q
W | S )Nr!   r'   r   )	Char1GlobIntGlobr,   )ZIntParIOIntLocr?   r   r   r   r=      s    r=   c             C   s$   t d k	rt j} ndatdtt _| S )Nd   r!   )r+   r   rB   r4   r
   )Z	PtrParOutr   r   r   r@      s
    r@   c              C   s   t dk} | pt} dad S )Nr'   B)rA   r3   r8   )ZBoolLocr   r   r   r0      s    r0   c               C   s   da tad S )Nr'   )rA   FALSEr3   r   r   r   r   r/      s    r/   c             C   sb   | }t | st}| tkrt}n@| tkr:tdkr4t}q^t}n$| tkrHt}n| tkrRn| tkr^t}|S )NrD   )Func3Ident4r,   r1   rB   r-   Ident5)	EnumParInZ
EnumParOutr   r   r   r:      s     r:   c             C   s   | d }|| }|S )Nr$   r   )IntParI1IntParI2rC   Z	IntParOutr   r   r   r4      s    r4   c             C   s   |d }|| |< | | | |d < || |d < x"t ||d D ]}||| |< q<W || |d  d || |d < | | ||d  |< dad S )Nr&   r      r$      )r)   rB   )Z	Array1ParZ	Array2ParrK   rL   rC   ZIntIndexr   r   r   r5      s     r5   c             C   s   | }|}||krt S tS d S )N)r,   r1   )ZCharPar1ZCharPar2ZCharLoc1ZCharLoc2r   r   r   r9      s
    r9   c             C   st   d}x2|dkr6t | | ||d  tkrd}|d }qW |dkrL|dkrLd}|dkrXtS | |krl|d }tS tS d S )Nr   r'   WZr#   X)r9   r,   TRUErF   )ZStrParI1ZStrParI2rC   ZCharLocr   r   r   r2      s    
r2   c             C   s   | }|t krtS tS )N)r-   rR   rF   )rJ   r?   r   r   r   rG      s     rG   __main__c             C   s6   t | dtjd t dtjd  tjd td d S )N )endfilezusage: %s [number_of_loops]r   )rV   rD   )r   sysstderrargvexit)msgr   r   r   error  s    r\   z%d arguments are too many;zInvalid argument %r;)0__doc__Z
__future__r   timer   ZLOOPSr   r)   r,   r1   r-   rH   rI   objectr   rR   rF   r   r   rB   r3   rA   r8   r6   r.   r+   r*   r   r7   r=   r@   r0   r/   r:   r4   r5   r9   r2   rG   r   rW   r\   lenrY   nargsintr   
ValueErrorr   r   r   r   <module>!   sV   
:



 