JavaScript 評測代碼運行速度

来源:https://www.cnblogs.com/yuzhihui/archive/2023/02/09/17104239.html
-Advertisement-
Play Games

一、使用 performance.now() API 在 JavaScript 中,可以使用 performance.now() API 來評測代碼的運行速度。該 API 返回當前頁面的高精度時間戳,您可以在代碼執行前後調用它來計算代碼執行所需的時間。 例如: let t0 = performanc ...


一、使用 performance.now() API

在 JavaScript 中,可以使用 performance.now() API 來評測代碼的運行速度。該 API 返回當前頁面的高精度時間戳,您可以在代碼執行前後調用它來計算代碼執行所需的時間。

例如:

let t0 = performance.now();

// 執行需要測試的代碼
for (let i = 0; i < 1000000000; i++) {
  // some code
}

let t1 = performance.now();
console.log("Code took " + (t1 - t0) + " milliseconds.");

註意,performance.now() API 只在現代瀏覽器中可用,並且可能會受到其他因素(例如電腦性能和當前頁面的負載)的影響,因此該結果只能作為相對值。

二、使用 console.time()console.timeEnd()

另一種評測 JavaScript 代碼運行速度的方法是使用 console.time()console.timeEnd()。這兩個方法允許您給特定代碼塊計時,併在代碼執行後在控制臺中顯示計時結果。

例如:

console.time("Test code");

// 執行需要測試的代碼
for (let i = 0; i < 1000000000; i++) {
  // some code
}

console.timeEnd("Test code");

 在控制臺中,您將看到類似於以下內容的輸出:

Test code: 824.047119140625 ms

 

使用 performance.now() API 和使用 console.time()console.timeEnd()這兩種方法都可以快速評測代碼的性能,但這些方法只是大致估算代碼運行速度,而不是精確的性能測量工具。因此,如果需要更精確的評測,可以使用專業的性能分析工具。

三、使用第三方庫

如果需要進行更嚴格的性能測試,您可以使用第三方庫,例如 Benchmark.js 或 JSLitmus。這些庫可以在多次運行代碼的情況下進行測試,並以可讀的方式報告結果,以便更好地評估性能。

例如,使用 Benchmark.js 進行性能測試的代碼可能如下所示:

var suite = new Benchmark.Suite;

// 添加測試用例
suite.add('Test code', function() {
  for (let i = 0; i < 1000000000; i++) {
    // some code
  }
})

// 運行測試用例
.on('cycle', function(event) {
  console.log(String(event.target));
})
.run({ 'async': true });

可以使用各種配置選項,例如指定運行次數、自動運行測試等,以適應需求。通過使用這些庫,可以對代碼的性能進行更精確的評估,並瞭解其在不同瀏覽器和設備環境中的表現。

四、使用瀏覽器開發者工具

例如,如果使用 Chrome 瀏覽器,可以使用 Chrome 開發者工具評測代碼的運行速度。

  1. 打開 Chrome 瀏覽器,並打開需要評測的頁面。

  2. 單擊瀏覽器的“更多工具”選項卡,然後選擇“開發者工具”。

  3. 在開發者工具的“控制台”選項卡中,單擊“Performance”按鈕,以啟動性能分析器。

  4. 單擊“開始”按鈕,以開始評測代碼的運行速度。

  5. 在瀏覽器控制臺中運行代碼,並觀察分析結果。您可以看到詳細的性能分析報告,其中包括代碼的 CPU 使用情況、記憶體使用情況、幀率等。

如使用 Firefox 瀏覽器,可以使用 Firefox 開發者工具評測代碼的運行速度。Firefox 開發者工具的使用方法類似 Chrome 開發者工具,請參閱 Firefox 開發者工具的文檔以獲取更多信息。

瀏覽器工具是評測 JavaScript 代碼運行速度的非常方便的工具。通過使用它,您可以獲得有關代碼性能的詳細信息,並確保代碼在各種環境中良好運行。

 

作者:yuzhihui

出處:https://www.cnblogs.com/yuzhihui/p/17104239.html

聲明:歡迎任何形式的轉載,但請務必註明出處!!!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 隨著對用戶體驗要求的提高,產品要求提升用戶體驗,多端體驗一致。隨著多端相同的業務也越來越多,需要投入IOS,Android,Web多端開發人員。這就迫切的需要一種一次開發同時使用在Android ,IOS ,Web的解決方案。達到降本增效的目的。在幾個小業面嘗試,總結經驗後,我們採用react-na... ...
  • 源碼下載地址 https://github.com/Aizhuxueliang/springboot_shiro.git 前提你電腦的安裝好這些工具:jdk8、idea、maven、git、mysql; shiro的主要概念 Shiro是一個強大的簡單易用的Java安全框架,主要用來更便捷的認證、授 ...
  • 有多種實現方式: 一、使用 Set 對象: Array.from(new Set(array)) 該方法會先創建一個 Set 對象,然後再使用 Array.from 方法將 Set 對象轉換為數組,因為 Set 對象不允許有重覆的元素,所以這樣可以實現去重的效果。 但是,如果數組中的元素是對象,Se ...
  • Web一階段面試題 1.簡述 <!doctype> 的作用? <!DOCTYPE> 聲明叫做文檔類型定義(DTD),聲明的作用是為了告訴瀏覽器該文件的類型。讓瀏覽器解析器知道應該用哪個規範來解析文檔。 五大主流的瀏覽器及其內核? Chrome 內核 Blink Safari 內核 Webkit Op ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 項目效果 我們今天要實現的是一個路徑規劃的功能,有兩個輸入框。輸入起點終點,然後查詢,得到規劃的路徑,效果如下: 我們會用到以下庫: Axios:用於發送請求,請求高德地圖的地理編碼API Jquery:也用於發送請求 Cesium:地圖 ...
  • 上文創建了一堆 utils、component-info,並實現了新組件模塊相關目錄和文件的創建。本文繼續實現後面的內容。 1 組件樣式文件並導入 在 src/service 目錄中創建 init-scss.ts 文件,該文件導出 initScss 函數。 由於 .vue 類型的組件的樣式就直接寫在 ...
  • JavaScript 詞法環境 本文主要講解JS詞法環境,我們將看到什麼是詞法環境,詞法範圍如何工作,函數內部的名稱如何解析,內部屬性,弄清楚詞法環境利於我們理解閉包。讓我們開始吧... 什麼是詞法環境? 在理解閉包時,最大的混淆來源是術語“辭彙環境”,或者只是“辭彙”這個詞。在電腦科學中術語“詞 ...
  • 演示代碼使用 Vue3 + ts + Vite 編寫,但是也會列出適用於 Vue2 的優化技巧,如果某個優化只適用於 Vue3 或者 Vue2,我會在標題中標出來。 代碼優化 v-for 中使用 key 使用 v-for 更新已經渲染的元素列表時,預設用就地復用策略;列表數據修改的時候,他會根據 k ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...