java統計程式碼執行時間

語言: CN / TW / HK
import com.google.common.base.Stopwatch;
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.TimeUnit;

@Slf4j
public class StopwatchUtils {
    static ThreadLocal<Stopwatch> stopwatchThreadLocal = new ThreadLocal<>();

    /**
     * 統計程式碼執行時間
     *
     * @param title
     */
    public static void printCodeExecTime(String title) {
        //本執行緒計時器
        if (stopwatchThreadLocal == null || stopwatchThreadLocal.get() == null) {
            stopwatchThreadLocal.set(Stopwatch.createStarted());
        }
        /* ============================================統計耗時===================================================================== */
        // 停止計時器 // 執行統計// 清空計時器// 再次啟動統計
        stopwatchThreadLocal.get().stop();
        log.info("==========耗時統計"
                + "==========" + title
                + "==========執行緒名字:" + Thread.currentThread().getName()
                + "==========執行緒id:" + Thread.currentThread().getId()
                + "==========執行時長(毫秒)  :  "
                + stopwatchThreadLocal.get().elapsed(TimeUnit.MILLISECONDS));
        stopwatchThreadLocal.get().reset();
        stopwatchThreadLocal.get().start();
        /* ============================================統計耗時===================================================================== */
    }
}