Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 02:27 23 Nov 2024 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : BASIC Speed Benchmark Tests

     Page 7 of 8    
Author Message
JohnS
Guru

Joined: 18/11/2011
Location: United Kingdom
Posts: 3797
Posted: 02:35pm 04 May 2024
Copy link to clipboard 
Print this post

I did find benchmarks useful (er, a longgg time ago) to show that going from CPU X to CPU Y (entirely different CPUs) things would be fast enough using C rather than ASM.

The best C was _much_ slower than the original ASM but the proposed CPU was _much_ faster :)

Went to an OS written in C instead of ASM, as well.

Cost lots less to get the finished product to market & was much faster to get there.

The old CPU was end of life & expensive, the new was a microprocessor.

John
 
lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 3150
Posted: 02:51pm 04 May 2024
Copy link to clipboard 
Print this post

Here's another "Recent Basic", Annex32 on an 18-pin ESP32-C3-Zero.

Annex ESP32-C3-Zero .010    .080    .151    .153    .186    .277    .506    .299

Pretty comparable to the F4.


PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed
 
JanVolk
Senior Member

Joined: 28/01/2023
Location: Netherlands
Posts: 143
Posted: 05:48pm 05 May 2024
Copy link to clipboard 
Print this post

Thanks Lizby,
I don't have this module yet, but I do have the LILYGO T-PicoC3. I also did some benchmark tests with various Annex ESP Basic modules.

2020
Annex WiFi 1.40(ESP8266):
Benchmark 1: 0.072 sec
Benchmark 2: 0.371 sec
Benchmark 3: 0.666 sec
Benchmark 4: 0.588 sec
Benchmark 5: 0.790 sec
Benchmark 6: 1,280 sec
Benchmark 7: 2,133 sec
Benchmark 8: 0.909 sec

2024
Annex WiFi 1.50(ESP8266):
Benchmark 1: 0.069 sec
Benchmark 2: 0.359 sec
Benchmark 3: 0.651 sec
Benchmark 4: 0.562 sec
Benchmark 5: 0.750 sec
Benchmark 6: 1,221 sec
Benchmark 7: 2,046 sec
Benchmark 8: 0.856 sec

Annex32 CAN 1.52.9 LFS:
Benchmark 1: 0.009 sec
Benchmark 2: 0.075 sec
Benchmark 3: 0.149 sec
Benchmark 4: 0.148 sec
Benchmark 5: 0.197 sec
Benchmark 6: 0.279 sec
Benchmark 7: 0.510 sec
Benchmark 8: 0.242 sec

Annex32-C3 CAN USB 1.52.4 qio LFS:
Benchmark 1: 0.010 sec
Benchmark 2: 0.079 sec
Benchmark 3: 0.155 sec
Benchmark 4: 0.156 sec
Benchmark 5: 0.191 sec
Benchmark 6: 0.277 sec
Benchmark 7: 0.498 sec
Benchmark 8: 0.282 sec

Annex32-S3 CAN DMT VGA HID 1.52.6 qio opi LFS:
Benchmark 1: 0.009 sec
Benchmark 2: 0.066 sec
Benchmark 3: 0.128 sec
Benchmark 4: 0.128 sec
Benchmark 5: 0.155 sec
Benchmark 6: 0.227 sec
Benchmark 7: 0.425 sec
Benchmark 8: 0.234 sec

Because Annex has basic Millis for Timer and cannot be set to 0, the adjusted code is adjusted.
Wlog for Print which runs in the web server, but Print can also be used.

Wlog "Annex32 CAN 1.52.9 LFS:"
Wlog "Benchmark 1: "
t = Millis
For j = 1 To 1000
Next j
Wlog (Millis - t) / 1000; ' Annex32 CAN 1.52.9 LFS = 0.009 sec
Wlog " sec"

And a Basic benchmark written in an editor and later compiled with a C compiler is not a fair comparison.

Jan
 
PhenixRising
Guru

Joined: 07/11/2023
Location: United Kingdom
Posts: 855
Posted: 06:18pm 05 May 2024
Copy link to clipboard 
Print this post

@JanVolk

Oh I have one of those modules somewhere.

Do you have a simple procedure to install Annex?

I just wanna load something like we do with the mites but it seems like you have to jump through hoops with Annex32 "use this no use that...look for an old thread..."

Life's too short  
 
stanleyella

Guru

Joined: 25/06/2022
Location: United Kingdom
Posts: 2109
Posted: 06:56pm 05 May 2024
Copy link to clipboard 
Print this post

And a Basic benchmark written in an editor and later compiled with a C compiler is not a fair comparison.

picaxe basic and great cow basic
 
JanVolk
Senior Member

Joined: 28/01/2023
Location: Netherlands
Posts: 143
Posted: 07:48pm 05 May 2024
Copy link to clipboard 
Print this post

PhenixRising,

This should be possible with a ToolKit.
For many links you have to log in to the CiccioCB forum, but that is free and very simple and you can select various languages.
There is an AnnexTK 1.22 for ESP8266 and ESP32 but this is outdated for the latest ESP microcontrollers, but the latest AnnexESP8266.bin and AnnexESP32.bin versions can still easily be updated using config in the ToolKit and the Website with the latest annex. bin.
There is also an Annex ToolKit Multiplatform version V1.1 beta and a Web site with the latest annex.bin versions for ESP8266, ESP32, ESP32-C3, ESP32-S2, ESP32-S3, ESP32CAM.
There is now also a serial online ToolKit for support with the latest ESP32 controllers still in beta (Annex ESP32 installer by cicciocb v 1.0), which works excellently and you do not need any additional tools and much is done automatically.
And consult the manual which is very clear for Annex Basic.
I don't know if I have permission from CiccioCB to post the links here?

The forum: https/cicciocb.com/forum/
The manual: https/cicciocb.com/annex32help/V1.518/

Jan
 
lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 3150
Posted: 08:08pm 05 May 2024
Copy link to clipboard 
Print this post

  PhenixRising said  Do you have a simple procedure to install Annex?


There's now a browser flasher--much easier than the toolkit: https://flasher.cicciocb.com/dist/index.html

Hold down the "Boot" button while powering on (then you can release). Press "Connect" in the web flasher and choose your serial port. It should detect what your module and memory size are. Click to choose firmware (don't remember the exact button label). You'll want the top one unless you know otherwise. Click the configure button to set your WIFI AP and password, and static address and gateway if not using DHCP.

Make sure you check all 6 check boxes (on initial installation--if reflashing and you want to keep prior configuration, you only need the single box which is pre-checked).

Click flash. It takes a minute or two.

Then, if it successfully connected wifi, you can go to the static IP address which you set (or you can seek for it with, for instance, Advanced WiFi Scanner).

If you can't connect, ask for assistance on the forum. I recently found that it wouldn't connect to one router on my network, but did connect to another--neither very far away).

https://cicciocb.com/forum/
PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed
 
JanVolk
Senior Member

Joined: 28/01/2023
Location: Netherlands
Posts: 143
Posted: 08:19pm 05 May 2024
Copy link to clipboard 
Print this post

Sorry the link is not correct.
The forum:  https://cicciocb.com/forum/
The manual: https://cicciocb.com/annex32help/V1.518/

Jan
 
JanVolk
Senior Member

Joined: 28/01/2023
Location: Netherlands
Posts: 143
Posted: 08:38pm 05 May 2024
Copy link to clipboard 
Print this post

Or choose:

https://cicciocb.com/

Jan
 
PhenixRising
Guru

Joined: 07/11/2023
Location: United Kingdom
Posts: 855
Posted: 01:32pm 06 May 2024
Copy link to clipboard 
Print this post

Thanks guys  
 
PhenixRising
Guru

Joined: 07/11/2023
Location: United Kingdom
Posts: 855
Posted: 09:38am 08 May 2024
Copy link to clipboard 
Print this post

Just came across:

  Quote  
One hundred and fifty years ago, British Prime Minister Benjamin Disraeli
declared that there are three types of lies: lies, damn lies, and statistics. If
Disraeli were alive today and working with microprocessors, he would add
benchmarks as a fourth category.


 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6766
Posted: 10:18am 08 May 2024
Copy link to clipboard 
Print this post

That is so true....   :)
It's by no means impossible to design a computer to run a given set of benchmarks blindingly fast, sacrificing all other aspects.

And again: you can compare the hardware, the OS or the programming language (or any IO / storage systems) but only one item at once. Change more than one variable and any results are at best unreliable.

.
Edited 2024-05-08 20:25 by Mixtel90
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 3150
Posted: 11:51am 08 May 2024
Copy link to clipboard 
Print this post

  Mixtel90 said  It's by no means impossible to design a computer to run a given set of benchmarks blindingly fast, sacrificing all other aspects.


Not just "not impossible", but done: "numerous major manufacturers were caught cheating on benchmarks. OEMs of all sizes (including Samsung, HTC, Sony, and LG) took part" benchmark cheaters

But that doesn't really apply to the series shown here, which shows relative speeds for a certain set of tasks for a particular piece of firmware (MMBasic) across a range of hardware--with some other interpreted Basics thrown in for the purpose of comparisons.

When Peter refactors MMBasic to provide significant speed-ups, it isn't for the purpose of looking better compared to older iterations--it's to improve utility to the user (and sometimes the improvements are backported to older hardware).

Benchmarks may lie, but this particular series illustrates the spectacular price/performance increases in computing power we have seen in our lifetime.
PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed
 
JohnS
Guru

Joined: 18/11/2011
Location: United Kingdom
Posts: 3797
Posted: 11:52am 08 May 2024
Copy link to clipboard 
Print this post

Optimisers have been known to recognise benchmarks & do a special job :)

John
 
PhenixRising
Guru

Joined: 07/11/2023
Location: United Kingdom
Posts: 855
Posted: 02:41pm 08 May 2024
Copy link to clipboard 
Print this post

  JanVolk said   but I do have the LILYGO T-PicoC3.


That's what I have.

It's a no-go for me, thus far...tried every darned thing.

The COM-Port shows-up in the list but all I get is:




No response from the Annex32 guys.

Googled the message and tried everything including switching from a W11 to W10 system.

Downloaded the toolkit, the COM Port shows up on the list, attempt to flash and it complains that the COM port doesn't exist.      

The USB-C connector is the correct orientation. I power-up, holding the Boot button so that all I have is a green LED. The COM Port even shows "J-Tag (something-or-other)"
 
lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 3150
Posted: 03:07pm 08 May 2024
Copy link to clipboard 
Print this post

  PhenixRising said  It's a no-go for me


I don't have that module, but have successfully flashed maybe 20 or more ESP32s using the web flasher--D1-Minis, S2-Minis, C3-Zeros, S2-Zeros.

Maybe it's a duff module (although I haven't had one yet).
PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed
 
JanVolk
Senior Member

Joined: 28/01/2023
Location: Netherlands
Posts: 143
Posted: 08:20pm 08 May 2024
Copy link to clipboard 
Print this post

PhenixRising ,

The LILYGO T-PicoC3 can be flashed in a somewhat strange way.
This module has an RP2040 with 4MB Flash and a 240x135 TFT screen and all other GP pins externally.
A reset button and a Boot button at the bottom. Furthermore, there is a UART connection (GP8-GP11) with the ESP32-C3 (GP4-GP7).
The ESP32-C3 with 4MB Flash and there is a UART connection (GP4-GP7) with RP2040 (GP8-GP11)
Also important for Flashing is that the USB-C can access the two microcontrollers separately by how the USB-C plug is placed in the module.
Blue LED then com port RP2040 and Green LED then com port ESP32-C3.
The RP2040 can be flashed in the usual way with Boot and Reset when the LED is blue.
The ESP32-C3 can be Flashed when the LED is green and with a link on GPIO9 to GND (Boot mode) and RUN(GP0) pulse to GND for reset ESP32-C3.
Now you can flash the ESP32-C3 with the online serial Flasher.
Chrome: WEB Installer   https://cicciocb.com/  
Chrome:   https://flasher.cicciocb.com/dist/index.html
First make contact with the serial flasher and then reset pulse. Connect
Choose Connect and in the connection screen click on the line USB JTAG/Serial debug ........ Connect
The ESP32-C3 should now report.
Select Firmware CAN_USB_qio_LFS for an update only and choose everything the first time.
Choose Configuration (WiFi Name and WiFi Password otherwise AP mode 192.168.4.1)
Choose Program
Furthermore, it follows itself.
Suc6.


RP2040 sjabloon.pdf


Jan
 
PhenixRising
Guru

Joined: 07/11/2023
Location: United Kingdom
Posts: 855
Posted: 08:50pm 08 May 2024
Copy link to clipboard 
Print this post

  JanVolk said  
The ESP32-C3 can be Flashed when the LED is green and with a link on GPIO9 to GND (Boot mode) and RUN(GP0) pulse to GND for reset ESP32-C3.


DOH! So the buttons are for the RP2040 but I need to use pins on the ESP32-C3. Yeah, thinking about it, would be dumb to share those buttons.



Many thanks, Jan (and Lizby)  
 
PhenixRising
Guru

Joined: 07/11/2023
Location: United Kingdom
Posts: 855
Posted: 09:44am 09 Oct 2024
Copy link to clipboard 
Print this post

Not really thread related...sorry.
Edited 2024-10-09 19:46 by PhenixRising
 
GerryL
Newbie

Joined: 24/01/2019
Location: Australia
Posts: 33
Posted: 04:39am 10 Oct 2024
Copy link to clipboard 
Print this post

Comparing apples with paddy melons, here is Forth (pForth) that I have running similar routines on a STM32H743 @400MHz
Forth Interpreted   0.001247 0.003843  0.008322 0.008908 0.00845  0.012053 0.022199 0.014162
Forth Compiled      0.000274 0.001837  0.003923 0.00369  0.004061 0.00582  0.013845 0.008716

\ Forth (pForth) Benchmark on STM32H743 running at 400MHz
VARIABLE nJ
VARIABLE nA
VARIABLE nM
FVARIABLE fJ
FVARIABLE V-fLOG
FVARIABLE V-fSIN
\ Interpret mode

CR CR ." INTERPRETED" CR
: Forth4000 ;

." Benchmark 1 = "
USEC-TICK
1000 0 DO LOOP
USEC-TICK 2SWAP D- D>F 1E6 F/ F. CR

." Benchmark 2 = "
USEC-TICK
0 nJ !
BEGIN 1 nJ +! nJ @ 999 > UNTIL
USEC-TICK 2SWAP D- D>F 1E6 F/ F. CR

." Benchmark 3 = "
USEC-TICK
0 nJ !
BEGIN 1 nJ +!
nJ @ DUP DUP DUP DUP DUP / * + SWAP - nA ! 999 > UNTIL
USEC-TICK 2SWAP D- D>F 1E6 F/ F. CR


." Benchmark 4 = "
USEC-TICK
0 nJ !
BEGIN 1 nJ +!
nJ @ DUP 2 / 3 * 4 + 5 - nA ! 999 > UNTIL
USEC-TICK 2SWAP D- D>F 1E6 F/ F. CR

." Benchmark 5 = "
USEC-TICK
0 nJ !
BEGIN 1 nJ +!
nJ @ DUP 2 / 3 * 4 + 5 - nM !
Forth4000 999 > UNTIL
USEC-TICK 2SWAP D- D>F 1E6 F/ F. CR

." Benchmark 6 = "
USEC-TICK
0 nJ !
CREATE RAY1 5 CELLS ALLOT  
BEGIN 1 nJ +!
nJ @ DUP 2 / 3 * 4 + 5 - nM !
Forth4000
5 0 DO LOOP 999 > UNTIL
USEC-TICK 2SWAP D- D>F 1E6 F/ F. CR


."  Benchmark 7 = "
USEC-TICK
0 nJ !
CREATE RAY2 5 CELLS ALLOT  
BEGIN 1 nJ +!
nJ @ DUP 2 / 3 * 4 + 5 - nM !
Forth4000
5 0 DO
nM @ I CELLS RAY2 + ! LOOP
999 > UNTIL
USEC-TICK 2SWAP D- D>F 1E6 F/ F. CR

." Benchmark 8 = "
USEC-TICK
0 nJ !
BEGIN 1 nJ +!
nJ @
DUP 0 D>F FDUP fJ F!
FDUP 2E F** F>D
DROP nM !  \ converted back to 32 bit int
FDUP V-fLOG F!
FALOG V-fSIN F!
999 > UNTIL
USEC-TICK 2SWAP D- D>F 1E6 F/ F. CR

\ compiled
CR CR ." COMPILED" CR
: BM1
." Benchmark 1 = "
USEC-TICK
1000 0 DO LOOP
USEC-TICK 2SWAP D- D>F 1E6 F/ F. CR
;

: BM2
." Benchmark 2 = "
USEC-TICK
0 nJ !
BEGIN 1 nJ +! nJ @ 999 > UNTIL
USEC-TICK 2SWAP D- D>F 1E6 F/ F. CR
;

: BM3
." Benchmark 3 = "
USEC-TICK
0 nJ !
BEGIN 1 nJ +!
nJ @ DUP DUP DUP DUP DUP / * + SWAP - nA ! 999 > UNTIL
USEC-TICK 2SWAP D- D>F 1E6 F/ F. CR
;

: BM4
." Benchmark 4 = "
USEC-TICK
0 nJ !
BEGIN 1 nJ +!
nJ @ DUP 2 / 3 * 4 + 5 - nA ! 999 > UNTIL
USEC-TICK 2SWAP D- D>F 1E6 F/ F. CR
;

: BM5
." Benchmark 5 = "
USEC-TICK
0 nJ !
BEGIN 1 nJ +!
nJ @ DUP 2 / 3 * 4 + 5 - nM !
Forth4000 999 > UNTIL
USEC-TICK 2SWAP D- D>F 1E6 F/ F. CR
;

: BM6
."  Benchmark 7 = "
USEC-TICK
0 nJ !
BEGIN 1 nJ +!
nJ @ DUP 2 / 3 * 4 + 5 - nM !
Forth4000
5 0 DO LOOP
999 > UNTIL
USEC-TICK 2SWAP D- D>F 1E6 F/ F. CR
;

: BM7
."  Benchmark 7 = "
USEC-TICK
0 nJ !
BEGIN 1 nJ +!
nJ @ DUP 2 / 3 * 4 + 5 - nM !
Forth4000
5 0 DO nM @ I CELLS RAY1 + ! LOOP \ cannot create arrays within compiled name
999 > UNTIL
USEC-TICK 2SWAP D- D>F 1E6 F/ F. CR
;

: BM8
." Benchmark 8 = "
USEC-TICK
0 nJ !
BEGIN 1 nJ +!
nJ @ DUP 0 D>F FDUP fJ F!
FDUP 2E F** F>D
DROP nM !  \ converted back to 32 bit int
FDUP V-fLOG F!
FALOG V-fSIN F!
999 > UNTIL
USEC-TICK 2SWAP D- D>F 1E6 F/ F. CR
;

: BMTEST
BM1 BM2 BM3 BM4 BM5 BM6 BM7 BM8
;

BMTEST \ do it




Still remembering Forth from 25 years ago so hopefully correct.

Gerry
 
     Page 7 of 8    
Print this page
© JAQ Software 2024