几种ESP32开发板性能测试

ESP32、ESP8266
ESP32-S2、ESP32-S3、ESP32-C3
回复
头像
shaoziyang
帖子: 3990
注册时间: 2019年 10月 21日 13:48

几种ESP32开发板性能测试

#1

帖子 shaoziyang »

为了了解esp32c6的性能,在手上的几个开发板上,做了一个简单的性能对比。编写了一小段测试程序,分别计算分形、圆周率等。测试不是太严谨,只作为一个参考。
 测试程序如下,包括了加法、乘法(除法)、分形、圆周率等计算程序,分别计算每项测试所用的时间,时间越短代表性能越好。为了保证在相同的环境下进行测试,在测试前,将开发板的固件都升级到最新的测试版本。

Code: Select all

from time import ticks_ms, ticks_diff
from machine import freq
from platform import platform
import gc

def run(func, *param):
gc.collect()
t1 = ticks_ms()
if param == None:
func()
else:
func(*param)
t2 = ticks_ms()
print('calc time:', ticks_diff(t2, t1), 'ms\n')

def mandelbrot(iter=80):
def in_set(c):
z = 0
for i in range(iter):
z = z * z + c
if abs(z) > 4:
return False
return True

for v in range(31):
for u in range(81):
if in_set((u / 30 - 2) + (v / 15 - 1) * 1j):
print(' ', end='')
else:
print('#', end='')
print()

def pi(places=100):
# 3 + 3*(1/24) + 3*(1/24)*(9/80) + 3*(1/24)*(9/80)*(25/168)
# The numerators 1, 9, 25, ... are given by (2x + 1) ^ 2
# The denominators 24, 80, 168 are given by (16x^2 -24x + 8)
extra = 8
one = 10 ** (places+extra)
t, c, n, na, d, da = 3*one, 3*one, 1, 0, 0, 24

while t > 1:
n, na, d, da = n+na, na+8, d+da, da+32
t = t * n // d
c += t
return c // (10 ** extra)


def add_test(N=100000, A=1.1, B=2.2):
for i in range(N):
A + B

def mul_test(N=100000, A=1.1, B=2.2):
for i in range(N):
A * B


print('\nSystem:', platform())
print('Frequency:', freq())
print('Memory:', gc.mem_free()+gc.mem_alloc())
print('\nBegin test\n')

print('Calculate 1000000 additions')
run(add_test, 1000000)

print('Calculate 1000000 multiplications')
run(mul_test, 1000000)

print('Calculate 1000000 divisions')
run(mul_test, 1000000, 12345, 1/13)

print('Calculate mandelbrot with iterations 200')
run(mandelbrot, 200)

print('Calculate 1000 digits of pi')
run(pi, 1000)

print('Calculate 10000 digits of pi')
run(pi, 10000)

 

头像
shaoziyang
帖子: 3990
注册时间: 2019年 10月 21日 13:48

Re: 几种ESP32开发板性能测试

#2

帖子 shaoziyang »

测试结果(时间单位是ms)
                            esp32c3  esp32c6  esp32s2  es32s3  rpi PICO  STM32F405 
频率                       160MHz   160MHz   160MHz   160MHz  125MHz    160MHz    
ram                        203264   342528   7797248  252416  233024    99328     
加法 1000000 次            5798     5642     7693     6403    10392     7911      
乘法 1000000 次            5955     5555     7670     6334    10257     7952      
除法 1000000 次            6263     5937     7307     5884    10313     7447      
mandelbrot (迭代次数 200)  4526     3862     8154     4122    7331      4392      
计算圆周率 1000 位         407      420      675      463     562       561       
计算圆周率 10000 位        32997    30260    60229    36467   66017     39538     

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章