質量屬性--性能--3

性能與時間有關。性能與事件發生時,將要耗費多長時間做出響應有關。
性能是指系統的響應能力----即對外部刺激出反應時所需要的時間或在某段時間內所處的事數。
性能的戰術:
資源需求--提高計算效率(改進算法),減少計算開銷(旁路引用),管理事件率率(降低採樣頻率),綁定執行次數(限制迭代次數),綁定隊列大小。
資源管理--引入併發性,維護數據或計算的多個副本(客戶端緩存),增加可用資源。
資源仲裁--先進先出,固定優先級調度(基於語義重要性、期限單調或速率單調),動態優先級調度(循環調度,最早的最後期限優先),靜態調度(先發制人點和資源分配順序脫機確定)。
***********************
***********************
【web性能】Web performance 獲取web各個階段響應時間:DNS解析時間、TCP建立連接時間、首頁白屏時間、dom渲染完成時間、頁面onload時間等
準確地測量web應用程序的性能特性是使web應用程序更快的一個重要方面
******************************
******************************
那麼我們怎麼知道一個網站加載定的時間呢?
我們可以添加時間戳標記
下面的JavaScript顯示了一個簡單的嘗試來度量完全加載頁面所需的
 1 <html>
 3 <head>
 5 <title>stark wang</title>
 7 <script type="text/javascript">
 9 var start = new Date().getTime();
11 function onLoad() {
13   var now = new Date().getTime();
15   var latency = now - start;
17   alert("page loading time: " + latency);
19 }
21 </script>
23 </head>
25 <body onload="onLoad()">
27 <!- Main page body goes from here. -->
29 </body>
31 </html>

結果:

再比如:

上面的腳本計算在執行頭部的第一個JavaScript後加載頁面所需的時間,但是它並沒有給出從服務器獲取頁面所需的時間,或者頁面的初始化生命週期。

******************************************

******************************************

 1 <!DOCTYPE html>
 3 <html lang="en">
 5 <head>
 7     <meta charset="UTF-8">
 9     <title>stark wang</title>
11 </head>
13     <script>
15 function showNavigationDetails() {
17   // 入口
19 const [entry] = performance.getEntriesByType("navigation"); 21 // 在控制檯可以看到很多參數 23 console.table(entry.toJSON()); 25 } 27 </script> 29 <body onload="showNavigationDetails()"> 33 </body> 35 </html
>結果:

自己去測試
這個接口省去我們很多時間,不再需要獲取時間戳了

****************************

***************************

Python獲取WEB各階段響應時間

****************************

****************************

 1 let timing = performance.timing,
 3      start = timing.navigationStart,
 5      dnsTime = 0,
 7      tcpTime = 0,
 9      firstPaintTime = 0,
11      domRenderTime = 0,
13      loadTime = 0;
17 dnsTime = timing.domainLookupEnd - timing.domainLookupStart;
19 tcpTime = timing.connectEnd - timing.connectStart;
21 firstPaintTime = timing.responseStart - start;
23 domRenderTime = timing.domContentLoadedEventEnd - start;
25 loadTime = timing.loadEventEnd - start;
29 console.log('DNS解析時間:', dnsTime , '\nTCP建立時間:', tcpTime, '\n首屏時間:', firstPaintTime,
31  '\ndom渲染完成時間:', domRenderTime, '\n頁面onload時間:', loadTime);

結果:

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章