美文网首页
性能测量

性能测量

作者: 春暖花已开 | 来源:发表于2023-06-19 09:26 被阅读0次
    // 计算一些关键的性能指标
    window.addEventListener('load', (event) => {
        // Time to Interactive
        const timing = performance.getEntriesByType('navigation')[0];
        console.log(timing.domInteractive);
        console.log(timing.fetchStart);
        const diff = timing.domInteractive - timing.fetchStart;
        console.log("TTI: " + diff);
    })
    
    // 观察长任务
    const observer = new PerformanceObserver((list) => {
        for (const entry of list.getEntries()) {
            console.log(entry)
        }
    })
    
    observer.observe({entryTypes: ['longtask']})
    
    // 界面可见性的状态监听
    let vEvent = 'visibilitychange';
    if (document.webkitHidden != undefined) {
        // webkit prefix detected
        vEvent = 'webkitvisibilitychange';
    }
    
    function visibilityChanged() {
        if (document.hidden || document.webkitHidden) {
            console.log("Web page is hidden.")
        } else {
            console.log("Web page is visible.")
        }
    }
    
    document.addEventListener(vEvent, visibilityChanged, false);
    
    // 网络状态监听
    const connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
    let type = connection.effectiveType;
    
    function updateConnectionStatus() {
      console.log("Connection type changed from " + type + " to " + connection.effectiveType);
      type = connection.effectiveType;
    }
    
    connection.addEventListener('change', updateConnectionStatus);
    
    const {performance, PerformanceObserver} = require('perf_hooks');
    
    const add = (a, b) => a+b;
    
    const num1 = 1;
    const num2 = 2;
    
    performance.mark('start');
    
    for(let i = 0; i < 10000000; i++) {
      add(num1, num2);
    }
    
    add(num1, 's');
    
    for(let i = 0; i < 10000000; i++) {
      add(num1, num2);
    }
    
    performance.mark('end');
    
    const observer = new PerformanceObserver((list) => {
      console.log(list.getEntries()[0]);
    })
    observer.observe({entryTypes: ['measure']});
    
    performance.measure('测量1', 'start', 'end');
    

    其他耗时计算公式:

    DNS 解析耗时: domainLookupEnd - domainLookupStart
    TCP 连接耗时: connectEnd - connectStart
    SSL 安全连接耗时: connectEnd - secureConnectionStart
    网络请求耗时 (TTFB): responseStart - requestStart
    数据传输耗时: responseEnd - responseStart
    DOM 解析耗时: domInteractive - responseEnd
    资源加载耗时: loadEventStart - domContentLoadedEventEnd
    First Byte时间: responseStart - domainLookupStart
    白屏时间: responseEnd - fetchStart
    首次可交互时间: domInteractive - fetchStart
    DOM Ready 时间: domContentLoadEventEnd - fetchStart
    页面完全加载时间: loadEventStart - fetchStart
    http 头部大小: transferSize - encodedBodySize
    重定向次数:performance.navigation.redirectCount
    重定向耗时: redirectEnd - redirectStart
    

    相关文章

      网友评论

          本文标题:性能测量

          本文链接:https://www.haomeiwen.com/subject/mwqeydtx.html