#!/python # vim: fileencoding=utf-8: ts=4: sw=4: expandtab: import gc import os import sys import machine def show_hw_info(): uname = os.uname() mem_total = gc.mem_alloc()+gc.mem_free() free_percent = "("+str((gc.mem_free())/mem_total*100.0)+"%)" alloc_percent = "("+str((gc.mem_alloc())/mem_total*100.0)+"%)" stat = os.statvfs('/flash') block_size = stat[0] total_blocks = stat[2] free_blocks = stat[3] rom_total = (total_blocks * block_size)/1024 rom_free = (free_blocks * block_size)/1024 rom_usage = (rom_total-rom_free) rfree_percent = "("+str(rom_free/rom_total*100.0)+"%)" rusage_percent = "("+str(rom_usage/rom_total*100.0)+"%)" print("ID ............:",machine.unique_id()) print("Platform ......:",sys.platform) print("Version .......:",sys.version) print("Memory") print(" total ......:",mem_total/1024,"KB") print(" usage ......:",gc.mem_alloc()/1024,"KB",alloc_percent) print(" free .......:",gc.mem_free()/1024,"KB",free_percent) print("ROM") print(" total ......:", rom_total,"KB" ) print(" usage ......:", rom_usage,"KB",rfree_percent ) print(" Free .......:", rom_free,"KB",rusage_percent ) print("system name ...:",uname.sysname) print("node name .....:",uname.nodename) print("release .......:",uname.release) print("version .......:",uname.version) print("machine .......:",uname.machine) print("Frequency .....:",machine.freq()) from machine import freq as cpufreq from time import ticks_us,ticks_diff MEG = const(1_000_000) SIZE = const(100_000) # zwei mal genutzt @micropython.viper #@micropython.native def memcpyB(src: ptr8, dest: ptr8, size:int): idx: int = size while (idx:=idx-1) >= 0: dest[idx] = src[idx] @micropython.viper #@micropython.native def memcpyHW(src: ptr16, dest: ptr16, size:int): idx: int = size//2 while (idx:=idx-1) >= 0: dest[idx] = src[idx] @micropython.viper #@micropython.native def memcpyW(src: ptr32, dest: ptr32, size:int): idx: int = size//4 while (idx:=idx-1) >= 0: dest[idx] = src[idx] def test(): cpufreq(240*MEG) t0 = ticks_us() ba1 = bytearray(SIZE) ba2 = bytearray(SIZE) t1 = ticks_us() memcpyB(ba1, ba2, SIZE) t2 = ticks_us() memcpyHW(ba1, ba2, SIZE) t3 = ticks_us() memcpyW(ba1, ba2, SIZE) t4 = ticks_us() print(f'CPU: {cpufreq()/MEG:8} MHz') print(f'alloc:{ticks_diff(t1,t0):8} µs') print(f'BYTE: {ticks_diff(t2,t1):8} µs') print(f'HALF: {ticks_diff(t3,t2):8} µs') print(f'WORD: {ticks_diff(t4,t3):8} µs') show_hw_info() print("") print("mem_free",gc.mem_free()) print("copy size",SIZE) print("") test() print("") print("mem_free",gc.mem_free())