try catch 对代码运行的性能影响_html/css_WEB-ITnose
起因
要捕获 JavaScript 代码中的异常一般会采用 try catch,不过 try catch 的使用是否是对代码性能产生影响呢?答案是肯定有的,但是有多少不得而知。
前端线上脚本错误的捕获方法:
window . JSTracker = window . JSTracker || [ ] ;
try {
//your code
} catch ( e ) {
JSTracker . push ( e ) ;
throw e ; //建议将错误再次抛出,避免测试无法发现异常
}
设计实验方式
简单的设计方案也就是对比实验。
空白组1:[无 try catch 的情况下对数据取模1千万次耗时]
1无 try catch的情况耗时
<script></script>
! function ( ) {
//无try catch的情况耗时
var t = new Date ( ) ;
//耗时代码开始
for ( var i = 0 ; i
var p = i % 2 ;
}
//耗时代码结束
document . write ( new Date ( ) – t ) ;
} ( ) ;
参照组2:[将耗时代码用 try 包围,内联耗时代码]
2在 try中内联代码的耗时情况
<script></script>
! function ( ) {
//在 try 中内联代码的耗时情况
var t = new Date ( ) ;
try {
//耗时代码开始
for ( var i = 0 ; i
var p = i % 2 ;
}
//耗时代码结束
throw new Error ( ) ;
} catch ( e ) {
}
document . write ( new Date ( ) – t ) ;
} ( ) ;
参照组3:[将耗时代码用 try 包围,外联耗时代码]
3在 try中内联代码的耗时情况
<script></script>
! function ( ) {
function run ( ) {
//耗时代码开始
for ( var i = 0 ; i
var p = i % 2 ;
}
//耗时代码结束
}
//在 try 中内联代码的耗时情况
var t = new Date ( ) ;
try {
run ( ) ;
throw new Error ( ) ;
} catch ( e ) {
}
document . write ( new Date ( ) – t ) ;
} ( ) ;
参照组4:[将耗时代码用 catch 包围,内联耗时代码]
4在 catch中内联代码的耗时情况
<script></script>
! function ( ) {
//在 catch 中内联代码的耗时情况
var t = new Date ( ) ;
try {
throw new Error ( ) ;
} catch ( e ) {
//耗时代码开始
for ( var i = 0 ; i
var p = i % 2 ;
}
//耗时代码结束
}
document . write ( new Date ( ) – t ) ;
} ( ) ;
参照组5:[将耗时代码用 catch 包围,外联耗时代码]
5在 catch中内联代码的耗时情况
<script></script>
! function ( ) {
function run ( ) {
//耗时代码开始
for ( var i = 0 ; i
var p = i % 2 ;
}
//耗时代码结束
}
//在 catch 中内联代码的耗时情况
var t = new Date ( ) ;
try {
throw new Error ( ) ;
} catch ( e ) {
run ( ) ;
}
document . write ( new Date ( ) – t ) ;
} ( ) ;
运行结果(只选取了 Chrome 作为示例)
– | 不使用 try-catch | try 中耗时,内联代码 | try 中耗时,外联代码 | catch 中耗时,内联代码 | catch 中耗时,外联代码 |
---|---|---|---|---|---|
Chrome51 | 98.2 | 1026.9 | 107.7 | 1028.5 | 105.9 |
给出总结
-
使用 try catch 的使用无论是在 try 中的代码还是在 catch 中的代码性能消耗都是一样的。
-
需要注意的性能消耗在于 try catch 中不要直接塞进去太多的代码(声明太多的变量),最好是吧所有要执行的代码放在另一个 function 中,通过调用这个 function 来执行。
针对第二点,可以查看 ECMA 中关于 try catch 的解释,在代码进入 try catch 的时候 js引擎会拷贝当前的词法环境,拷贝的其实就是当前 scope 下的所有的变量。
建议
在使用 try catch 的时候尽量把 try catch 放在一个相对干净的 scope 中,同时在 try catch 语句中也尽量保证足够少的变量,最好通过函数调用方式来 try catch。
试验中的现象解释
测试过程中还是发现了一个疑问, 以下两段代码在 Chrome 44 中运行出来的结果差距非常大,加了一句空的 try catch 之后平均为:850ms,加上之前为:140ms。
! function ( ) {
//无 try catch 的情况耗时
var t = new Date ( ) ;
//耗时代码开始
for ( var i = 0 ; i
var p = i % 2 ;
}
//耗时代码结束
document . write ( new Date ( ) – t ) ;
try {
} catch ( e ) {
}
} ( ) ;
! function ( ) {
//无 try catch 的情况耗时
var t = new Date ( ) ;
//耗时代码开始
for ( var i = 0 ; i
var p = i % 2 ;
}
//耗时代码结束
document . write ( new Date ( ) – t ) ;
} ( ) ;
其实原因很简单
只要把代码改为这样 耗时就降下来了:
! function ( ) {
! function ( ) {
//无 try catch 的情况耗时
var t = new Date ( ) ;
//耗时代码开始
for ( var i = 0 ; i
var p = i % 2 ;
}
//耗时代码结束
document . write ( new Date ( ) – t ) ;
} ( ) ;
try {
} catch ( e ) {
}
} ( ) ;

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

HTML、CSS和JavaScript在Web開發中的作用分別是:1.HTML定義網頁結構,2.CSS控製網頁樣式,3.JavaScript添加動態行為。它們共同構建了現代網站的框架、美觀和交互性。

HTML的未來趨勢是語義化和Web組件,CSS的未來趨勢是CSS-in-JS和CSSHoudini,JavaScript的未來趨勢是WebAssembly和Serverless。 1.HTML的語義化提高可訪問性和SEO效果,Web組件提升開發效率但需注意瀏覽器兼容性。 2.CSS-in-JS增強樣式管理靈活性但可能增大文件體積,CSSHoudini允許直接操作CSS渲染。 3.WebAssembly優化瀏覽器應用性能但學習曲線陡,Serverless簡化開發但需優化冷啟動問題。

HTML的未來充滿了無限可能。 1)新功能和標準將包括更多的語義化標籤和WebComponents的普及。 2)網頁設計趨勢將繼續向響應式和無障礙設計發展。 3)性能優化將通過響應式圖片加載和延遲加載技術提升用戶體驗。

HTML是構建網頁結構的基石。 1.HTML定義內容結構和語義,使用、、等標籤。 2.提供語義化標記,如、、等,提升SEO效果。 3.通過標籤實現用戶交互,需注意表單驗證。 4.使用、等高級元素結合JavaScript實現動態效果。 5.常見錯誤包括標籤未閉合和屬性值未加引號,需使用驗證工具。 6.優化策略包括減少HTTP請求、壓縮HTML、使用語義化標籤等。

HTML、CSS和JavaScript在網頁開發中的角色分別是:HTML負責內容結構,CSS負責樣式,JavaScript負責動態行為。 1.HTML通過標籤定義網頁結構和內容,確保語義化。 2.CSS通過選擇器和屬性控製網頁樣式,使其美觀易讀。 3.JavaScript通過腳本控製網頁行為,實現動態和交互功能。

HTML、CSS和JavaScript是構建現代網頁的核心技術:1.HTML定義網頁結構,2.CSS負責網頁外觀,3.JavaScript提供網頁動態和交互性,它們共同作用,打造出用戶體驗良好的網站。

HTMLISNOTAPROGRAMMENGUAGE; ITISAMARKUMARKUPLAGUAGE.1)htmlStructures andFormatSwebContentusingtags.2)itworkswithcsssforstylingandjavascript for Interactivity,增強WebevebDevelopment。

本文討論了HTML標籤,和和關注其語義與表現用途及其對SEO和可訪問性的影響之間的差異。
