#!/python import gc # vim: fileencoding=utf-8: ts=4: sw=4: expandtab: 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 def memcpyB(src: ptr8, dest: ptr8, size:int): idx: int = size while (idx:=idx-1) >= 0: dest[idx] = src[idx] @micropython.viper def memcpyHW(src: ptr16, dest: ptr16, size:int): idx: int = size//2 while (idx:=idx-1) >= 0: dest[idx] = src[idx] @micropython.viper 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') print("DUT: ESP32 S3 n8r2\n") print("mem_free",gc.mem_free()) print("copy size",SIZE) print("") test() print("") print("mem_free",gc.mem_free())