#!/usr/bin/python3 # -*- coding: UTF-8 -*- # vim:fileencoding=UTF-8:ts=4 import micropython from math import log from time import ticks_us, ticks_diff def function_1(n): while n > 0: result = log(n) n -= 1 @micropython.native def function_2(n): while n > 0: result = log(n) n -= 1 @micropython.viper def function_3(n: int): while n > 0: result = log(n) n -= 1 def main(): N = 100_000 for cpu_speed in (33, 66, 133, 266): machine.freq(int(cpu_speed*1e6)) t0 = ticks_us() function_1(N) t1 = ticks_us() td = ticks_diff(t1, t0) print(f'CPU:{cpu_speed:3d} MHz {round(1e6 * N / td):6d}', end=' ') t0 = ticks_us() function_2(N) t1 = ticks_us() td = ticks_diff(t1, t0) print(f'{round(1e6 * N / td):6d}', end=' ') t0 = ticks_us() function_3(N) t1 = ticks_us() td = ticks_diff(t1, t0) print(f'{round(1e6 * N / td):6d} FLOPS/core') main() # CPU: 33 MHz 14390 17463 18938 FLOPS/core # CPU: 66 MHz 28665 35097 37680 FLOPS/core # CPU:133 MHz 57765 70724 75931 FLOPS/core # CPU:266 MHz 115990 140767 152656 FLOPS/core