import time

def get_time():
    return time.ticks_ms()

def time_diff(end, start):
    return time.ticks_diff(end, start)

def sleep_ms(ms):
    time.sleep_ms(ms)

class Timer:
    def __init__(self):
        """初始化计时器"""
        self.start_time = 0
        self.stop_time = 0
        self.running = False

    def start(self):
        """开始计时"""
        if not self.running:
            self.start_time = get_time()
            self.running = True
        return self

    def stop(self):
        """停止计时"""
        if self.running:
            self.stop_time = get_time()
            self.running = False
        return self

    def reset(self):
        """重置计时器"""
        self.start_time = 0
        self.stop_time = 0
        self.running = False
        return self

    def elapsed_ms(self):
        """返回经过的毫秒数"""
        if self.running:
            return time_diff(get_time(), self.start_time)
        return time_diff(self.stop_time, self.start_time)

    def elapsed_seconds(self):
        """返回经过的秒数"""
        return self.elapsed_ms() / 1000.0

    def __enter__(self):
        """上下文管理器入口"""
        self.start()
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        """上下文管理器出口"""
        self.stop()

# 创建一个装饰器用于测量函数执行时间
def measure_time(func):
    def wrapper(*args, **kwargs):
        timer = Timer()
        timer.start()
        result = func(*args, **kwargs)
        timer.stop()
        print(f"{func.__name__} took {timer.elapsed_ms():.3f}ms")
        return result
    return wrapper