import time

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 = time.perf_counter()
            self.running = True
        return self

    def stop(self):
        """停止计时"""
        if self.running:
            self.stop_time = time.perf_counter()
            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.perf_counter() - self.start_time) * 1000
        return (self.stop_time - self.start_time) * 1000

    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