测试程序如下,包括了加法、乘法(除法)、分形、圆周率等计算程序,分别计算每项测试所用的时间,时间越短代表性能越好。为了保证在相同的环境下进行测试,在测试前,将开发板的固件都升级到最新的测试版本。
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)