package com.sonic.cow.utils;
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.TimeUnit;

/**
 * @description: 代码执行时长工具类
 * @author: mzc
 * @date: 2025-10-21 10:12
 **/
@Slf4j
public class TimerUtils {
    // 开始计时，返回当前时间戳（纳秒）
    public static long start() {
        return System.nanoTime();
    }

    // 结束计时并打印时长（默认毫秒）
    public static void logCost(long startTime, String stepName) {
        long costNanos = System.nanoTime() - startTime;
        long costMs = TimeUnit.NANOSECONDS.toMillis(costNanos);
        log.info("{} 执行时长：{} ms", stepName, costMs);
    }

    // 重载：支持自定义时间单位（如微秒、秒）
    public static void logCost(long startTime, String stepName, TimeUnit unit) {
        long cost = unit.convert(System.nanoTime() - startTime, TimeUnit.NANOSECONDS);
        System.out.printf("[%s] 执行时长：%d %s%n", stepName, cost, unit.name().toLowerCase());
        log.info("{} 执行时长：{} {}", stepName, cost, unit.name().toLowerCase());

    }
}