国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

盤點多種方法耗時統(tǒng)計的實操解法

開發(fā) 前端
在應用開發(fā)里,精準把控方法執(zhí)行耗時,對優(yōu)化系統(tǒng)性能、提升用戶體驗意義重大。下面將介紹幾種不同的方法耗時統(tǒng)計方式,每種都有其獨特的適用場景。

前言

在應用開發(fā)里,精準把控方法執(zhí)行耗時,對優(yōu)化系統(tǒng)性能、提升用戶體驗意義重大。下面將介紹幾種不同的方法耗時統(tǒng)計方式,每種都有其獨特的適用場景。

System.currentTimeMillis ()

在方法內借助System.currentTimeMillis()記錄起始和結束時間,進而算出方法執(zhí)行耗時。這種方式簡單直接,無需引入額外依賴。

@Service
public class BookService {
    public Book getBookById(Long id) {
        long startTime = System.currentTimeMillis();

        // 模擬從數(shù)據(jù)庫獲取書籍信息的業(yè)務邏輯
        Book book = bookRepository.findById(id).orElse(null);

        long endTime = System.currentTimeMillis();
        long elapsedTime = endTime - startTime;
        System.out.println("getBookById方法耗時:" + elapsedTime + "ms");

        return book;
    }
}

利用 StopWatch

@Service
public class UserService {
    public User findUserById(Long id) {
        StopWatch stopWatch = new StopWatch();
        stopWatch.start();

        // 模擬業(yè)務邏輯,這里從數(shù)據(jù)庫查詢用戶信息
        User user = userRepository.findById(id).orElse(null);

        stopWatch.stop();
        System.out.println("findUserById方法執(zhí)行耗時:" + stopWatch.getTotalTimeMillis() + "毫秒");

        return user;
    }
}

使用AOP實現(xiàn)全局方法

在 項目中配置aop依賴后,就能利用它進行方法耗時統(tǒng)計

@Aspect
@Component
public class MethodTimeAspect {
    @Around("execution(* com.example.demo.service.*.*(..))")
    public Object measureTime(ProceedingJoinPoint joinPoint) throws Throwable {
        long startTime = System.currentTimeMillis();
        Object result = joinPoint.proceed();
        long endTime = System.currentTimeMillis();
        long elapsedTime = endTime - startTime;
        String methodName = joinPoint.getSignature().getName();
        System.out.println("方法[" + methodName + "]耗時:" + elapsedTime + "ms");
        return result;
    }
}

利用 HandlerInterceptor 統(tǒng)計

Spring的HandlerInterceptor可用于監(jiān)控Controller層接口的耗時情況

public class ControllerTimeInterceptor implements HandlerInterceptor {
    private ThreadLocal<Long> startTime = new ThreadLocal<>();

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        startTime.set(System.currentTimeMillis());
        returntrue;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
        long endTime = System.currentTimeMillis();
        long elapsedTime = endTime - startTime.get();
        String uri = request.getRequestURI();
        System.out.println("接口[" + uri + "]耗時:" + elapsedTime + "ms");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        // 可在此處進行資源清理等操作
        startTime.remove();
    }
}
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new ControllerTimeInterceptor())
               .addPathPatterns("/api/**");
    }
}

基于 Servlet Filter 統(tǒng)計

通過創(chuàng)建Servlet Filter,可記錄HTTP請求的整體耗時

@WebFilter("/*")
public class RequestTimeFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        long startTime = System.currentTimeMillis();
        chain.doFilter(request, response);
        long endTime = System.currentTimeMillis();
        long elapsedTime = endTime - startTime;
        String requestUri = ((HttpServletRequest) request).getRequestURI();
        System.out.println("請求[" + requestUri + "]耗時:" + elapsedTime + "ms");
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}

    @Override
    public void destroy() {}
}

使用ServletRequestHandledEvent統(tǒng)計

在Spring框架中,監(jiān)控接口請求的性能可以通過ServletRequestHandledEvent事件實現(xiàn)

@Component
public class TimeCountListener implements ApplicationListener<ServletRequestHandledEvent> {

  @Override
  public void onApplicationEvent(ServletRequestHandledEvent event) {
    Throwable failureCause = event.getFailureCause();
    if (failureCause != null) {
      System.err.printf("錯誤原因: %s%n", failureCause.getMessage());
    }
    System.err.println("========================================");
    System.err.printf("請求客戶端地址:%s\n請求URL: %s\n請求Method: %s\n請求耗時: %d毫秒%n", 
        event.getClientAddress(),
        event.getRequestUrl(), 
        event.getMethod(), 
        event.getProcessingTimeMillis());
    System.err.println("========================================");
  }
}

實際開發(fā)時,需根據(jù)項目規(guī)模、業(yè)務場景、性能需求等因素綜合考慮,選擇最合適的方法,從而高效地進行性能優(yōu)化。

責任編輯:武曉燕 來源: 一安未來
相關推薦

2009-07-03 13:22:37

調用Servlet

2009-10-20 15:39:20

Linux壓縮

2024-01-12 08:40:56

Python計算質數(shù)質數(shù)

2010-05-14 18:16:44

MySQL統(tǒng)計函數(shù)

2009-05-18 17:16:50

2009-12-01 18:03:56

Linux版本

2010-08-16 16:39:48

DIV內容居中

2010-04-19 16:17:39

防火墻網(wǎng)絡管理服務器安全

2010-04-12 09:36:29

Oacle merge

2019-03-27 14:41:41

Python數(shù)據(jù)庫Windows

2022-07-05 15:15:11

Python日期命令

2025-10-21 02:00:00

2009-03-17 00:52:52

2025-02-10 10:52:34

WinForm窗口閃爍C#

2020-09-14 14:18:05

Vue和React

2010-05-18 12:24:16

MySQL binlo

2010-04-15 14:18:30

Oracle創(chuàng)建

2010-05-10 17:00:53

Oracle死鎖進程

2010-04-09 10:13:13

Oracle數(shù)據(jù)字典

2025-04-08 08:01:31

點贊
收藏

51CTO技術棧公眾號

日本一区高清| 欧美日韩国产成人在线观看| 91女神在线视频| 男女精品视频| 91九色精品| 欧美伦理影院| 成人vr资源| 91精品国偷自产在线电影 | 精品88久久久久88久久久| 欧美性高清videossexo| 欧美一区二区三区精品| 国产亚洲精品久久久久久| 欧美亚州韩日在线看免费版国语版| 亚洲精品免费看| 91国偷自产一区二区开放时间| 香蕉影视欧美成人| 久久久夜色精品亚洲| 国产99精品国产| 久久66热偷产精品| 另类综合日韩欧美亚洲| 亚洲人成高清| 国产日韩欧美在线播放不卡| 亚洲激情二区| 日韩国产在线观看一区| 琪琪一区二区三区| 国产在线视频一区二区三区| 精品午夜久久福利影院| 国产精品一区二区久激情瑜伽| 麻豆精品视频在线观看视频| 日韩电影免费在线看| 国产米奇在线777精品观看| 国产1区2区3区精品美女| 99久久婷婷国产| 2024国产精品| 亚洲制服丝袜一区| 五月开心婷婷久久| 91精品福利在线一区二区三区 | 中国丰满人妻videoshd| 亚洲丰满在线| 亚洲在线不卡| a在线视频观看| 热99在线观看| videoxxxx另类日本极品| 男人久久精品| 午夜激情在线播放| 免费在线观看一区| 91免费版在线观看| 欧美激情网站在线观看| 亚洲一区影音先锋| 欧美人xxxx| 久久精品中文字幕一区| 国产精品手机播放| 日韩电影大全在线观看| 欧美变态另类刺激| 在线播放你懂的| 在线看女人毛片| 中文在线免费一区三区| 国产一区二区三区四区老人| 丁香婷婷综合色啪| 精品露脸国产偷人在视频| 欧美成人a视频| 2021久久精品国产99国产精品| 丁香婷婷久久久综合精品国产 | 亚洲视频一区在线| 日韩欧美国产系列| 欧美一级在线播放| 亚洲午夜精品一区二区| 在线影院av| 欧美一区1区三区3区公司| 国产av国片精品| 免费黄网站在线| 欧美日韩激情在线一区二区三区| 国产一区二区精品久久99| 亚洲自拍偷拍九九九| 中文日韩在线观看| 久久青青草原| 一本大道香蕉久在线播放29| gogo久久日韩裸体艺术| 成人aa视频在线观看| 日韩亚洲欧美一区| 国产九区一区在线| 中文字幕高清在线| 天堂精品久久久久| 国产精品自拍av| 亚洲免费av片| 欧美区高清在线| 国产毛片在线| 91亚洲国产高清| 午夜精品在线视频一区| 日韩美女av在线免费观看| 日韩精品视频一二三| 91成人短视频在线观看| 99久久er热在这里只有精品15| 亚洲欧美国产精品| 一区二区在线高清视频| 欧美伦理91| 国产乱子轮精品视频| 亚洲天堂免费观看| 亚洲熟妇无码一区二区三区| 97成人超碰| 久久久国产午夜精品| 午夜精品久久久久久久99黑人| 国产视频1区2区3区| 精品国精品国产自在久国产应用| 亚洲婷婷在线视频| 成人精品在线观看| 午夜在线视频播放| 日本va欧美va精品| 日韩中文字幕在线视频| 免费国产成人av| 成人三级视频| 7777精品伊人久久久大香线蕉最新版 | 免费毛片在线不卡| 天天操天天色综合| 玖玖玖精品中文字幕| 一个人www视频在线免费观看| 91片在线免费观看| 国产精品国产三级国产专播精品人 | 影音先锋久久久| 日韩精品久久久久久福利| 97在线国产视频| 日韩精品电影| 精品av综合导航| 99热在线看| 亚洲巨乳在线| 欧美极品欧美精品欧美视频 | 国产成人精品www牛牛影视| 欧美成在线视频| 欧美黑人疯狂性受xxxxx野外| 色狠狠一区二区三区香蕉| 色爱综合网站| 亚洲欧美视频一区| 三级黄色的网站| 日韩美女啊v在线免费观看| 亚洲熟妇av日韩熟妇在线| 成人av在线播放网址| www.99热这里只有精品| 成人午夜激情影院| 久久久999免费视频| 国产日韩欧美精品综合| www.99色| 天天综合网 天天综合色| 天天在线女人的天堂视频| 日本韩国一区二区三区| 国产高清美女一级毛片久久| 欧美另类z0zxhd电影| 在线不卡日本v二区707| 日韩国产激情在线| 国产无遮挡又黄又爽免费网站| 激情懂色av一区av二区av| www日韩tube| 国产午夜精品麻豆| 国产电影一区二区| 亚洲成a人v欧美综合天堂下载| 国产91精品在线观看| 青青青青草视频| 国产欧美日韩综合| 激情六月婷婷| 欧美喷水一区二区| 成人小电影网站| 欧美在线一区二区三区四| 永久91嫩草亚洲精品人人| 在线看视频不卡| 久久午夜羞羞影院免费观看| 国产一级黄色片免费| 欧洲一区二区三区在线| 桃色一区二区| 国产精品日韩精品| 免费人成网站在线观看欧美高清| 欧美一区二区三区爽大粗免费| 亚洲视频1区2区| 国产精品欧美在线| 青青草一区二区三区| 四虎永久在线高清国产精品| 91精品国产免费| 国内自拍欧美| 日本一区二区久久精品| 国产精品久久久久久久久免费相片| 69久久夜色| 2019日本中文字幕| 七七婷婷婷婷精品国产| 天天干夜夜干| 亚洲欧美在线免费观看| 久久久国产精品| 天天爱天天操天天干| av在线日韩| 精品少妇一区二区三区| 日韩一区二区三区高清在线观看| 99精品国产高清一区二区| 久久色视频免费观看| 激情av在线播放| 国产视频观看一区| 91免费观看视频| 羞羞视频在线免费国产| 国产www精品| 99精品国产99久久久久久白柏| 啊v视频在线| 成人字幕网zmw| 一级中文字幕一区二区| 欧美影院视频|