Post Reply 
Python Speed
04-21-2021, 07:34 AM (This post was last modified: 04-21-2021 07:39 AM by toml_12953.)
Post: #1
Python Speed
The new Python interpreter graphics are fast!

I ran three programs to draw a green hat, Here are the runtimes:

HPPL: 7.793 sec
CAS with Python syntax: 25.436 sec
Python (Apr 16 Beta): 0.926 sec

Here's the Python version:
Code:
#PYTHON EXPORT pyhat
from hpprime import *
from math import *
t0 = eval("ticks()") # Save the current clock count for timing program
# Clear screen
fillrect(0,0,0,320,240,0,0)
# Start program proper
p=160; q=120
xp=144; xr=1.5*3.1415927
yp=56; yr=1; zp=64
xf=xr/xp; yf=yp/yr; zf=xr/zp
for zi in range(-q,q+1):
  if zi>=-zp and zi<=zp:
    zt=zi*xp/zp; zz=zi
    xl=int(.5+sqrt(xp*xp-zt*zt))
    # Draw one cross-section of figure
    for xi in range(-xl,xl+1):
      xt=sqrt(xi*xi+zt*zt)*xf; xx=xi
      yy=(sin(xt)+.4*sin(3*xt))*yf
      x1=xx+zz+p
      y1=yy-zz+q
      pixon(0,x1,230-y1,65280)
      if y1!=0:
        line(0,x1,230-y1+1,x1,230,0) # Erase points below current point
t = eval("ticks()")-t0
# Wait for key and print elapsed time
eval("wait()")
t = t/1000
print(t," seconds")
#end

Tom L
Cui bono?
Find all posts by this user
Quote this message in a reply
04-21-2021, 12:05 PM
Post: #2
RE: Python Speed
Incredible! How was this speed test done? Did you use the emulator? Have you used the HP PRIME G2?
Find all posts by this user
Quote this message in a reply
04-21-2021, 01:46 PM
Post: #3
RE: Python Speed
(04-21-2021 12:05 PM)robmio Wrote:  Incredible! How was this speed test done? Did you use the emulator? Have you used the HP PRIME G2?

All times were measured on a G2.

Tom L
Cui bono?
Find all posts by this user
Quote this message in a reply
04-21-2021, 03:14 PM
Post: #4
RE: Python Speed
(04-21-2021 07:34 AM)toml_12953 Wrote:  The new Python interpreter graphics are fast!

I ran three programs to draw a green hat, Here are the runtimes:

HPPL: 7.793 sec
CAS with Python syntax: 25.436 sec
Python (Apr 16 Beta): 0.926 sec

Very nice. My PRIME G2 takes even a bit longer, about 8.2 seconds to run the HPPL program.

I've used the following code, which I've translated to HPPL from the CAS Python code:

Code:
EXPORT pyhat()
BEGIN
  LOCAL XP,XR,YP,YR,ZP,XI;
  LOCAL XF,YF,ZF,ZI,ZT,ZZ;
  LOCAL XL,XT,XX,YY,X1,Y1;
  T:=TICKS; // Save the current clock count for timing program
  // Black out background
  rect_p(0,0,320,240,rgb(0,0,0));
  // Start program proper
  P:=160; Q:=120;
  XP:=144; XR:=1.5*3.1415927;
  YP:=56; YR:=1; ZP:=64;
  XF:=XR/XP; YF:=YP/YR; ZF:=XR/ZP;
  FOR ZI FROM -Q TO Q DO
    IF ZI>=-ZP AND ZI<=ZP THEN
      ZT:=ZI*XP/ZP; ZZ:=ZI;
      XL:=int(.5+sqrt(XP*XP-ZT*ZT));
      // Draw one cross-section of figure
      FOR XI FROM -XL TO XL DO
        XT:=sqrt(XI*XI+ZT*ZT)*XF; XX=XI;
        YY:=(sin(XT)+.4*sin(3*XT))*YF;
        X1:=XX+ZZ+P;
        Y1:=YY-ZZ+Q;
        pixon_p(X1,230-Y1,rgb(0,255,0));
        IF Y1!=0 THEN
          Line_p(X1,230-Y1+1,X1,230); // Erase points below current point
        END;
      END;
    END;
  END;
  T:=TICKS-T;
  // Wait for key and print elapsed time
  FREEZE;
  PRINT((T/1000)+" seconds");
END;

Not sure if the PRIME Python graphics library internals are any different. The Python interpreter presumably uses the hardware floating point support of the Cortex-A7. The fp performance of Python on the HP PRIME is incredibly good: https://tiplanet.org/forum/viewtopic.php...518#HPPPY5 (translated in English with Google translate):

"The HP Prime are really extraordinary in floating point calculation Python and the HP Prime G2 even crushes all competition with its omnipotence, even by doping the latter with overclocking! Both among the solutionsPython official and solutions Python compatible with exam mode, HP Prime G2 is clearly the most powerful either in integer or in floating point calculus, and by far, congratulations!"

Even faster than "doping the competition with overclocking"... Wink

- Rob

"I count on old friends" -- HP 71B,Prime|Ti VOY200,Nspire CXII CAS|Casio fx-CG50...|Sharp PC-G850,E500,2500,1500,14xx,13xx,12xx...
Visit this user's website Find all posts by this user
Quote this message in a reply
04-21-2021, 05:10 PM
Post: #5
RE: Python Speed
That's blindingly fast.

As a point of comparison, I adapted your python program to run on my TI Nspire CX II CAS under its native python.

The program took 215.98 seconds (yes, 3.5 minutes) to draw the hat.

I optimized it slightly by doing all the drawing in a buffer and displaying the final product when done. That reduced time to 82.25 seconds.

Looks like the HP Prime python is very well optimized.
Find all posts by this user
Quote this message in a reply
04-22-2021, 06:26 PM
Post: #6
RE: Python Speed
Changing

Code:
pixon(0,x1,230-y1,65280)

to

Code:
pixon(0,x1,230-y1,eval("rgb(0,255,0)"))

made the runtime go from 0.92 seconds to 4.37 seconds!

Tom L
Cui bono?
Find all posts by this user
Quote this message in a reply
04-22-2021, 06:41 PM
Post: #7
RE: Python Speed
Although I think that the "Summation based benchmark for calculators " is of limited value, I thought I give it a try. Look here for the results - impressive.

Günter
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)