小程序制作要多少钱_JS顶用try catch对代码运转的性能影响分析

  • 栏目:行业动态 时间:2021-01-12 15:53 分享新闻到:
<返回列表

JS中用try catch对代码运行的性能影响分析       要捕获JavaScript代码中的异常一般会采用 try catch,不过try catch的使用是否是对代码性能产生影响呢?答案是肯定有的,但是有多少不得而知。下面这篇文章就给大家详细介绍了在JS中用try catch对代码运行的性能影响,有需要的朋友们可以参考借鉴。

前言

之前一直没有去研究try catch对代码运行的性能影响,只是一直停留在了感觉上,正好最近开会交流学习的时候,有人提出了相关的问题。借着周末,正好研究一番。

前端线上脚本错误的捕获方法:

window.JSTracker=window.JSTracker||[];
//your code
}catch(e){
JSTracker.push(e);
throwe;//建议将错误再次抛出,避免测试无法发现异常
}

设计实验方式

简单的设计方案也就是对比实验。

空白组1:[无 try catch 的情况下对数据取模1千万次耗时]

 !DOCTYPEhtml 
 html 
 head 
 title 1无trycatch的情况耗时 /title 
 script 
!function(){
//无try catch的情况耗时
vart=newDate();
//耗时代码开始
for(vari=0;i ;i++){
varp=i%2;
//耗时代码结束
document.write(newDate()–t);
 /script 
 /head 
 body 
 /body 
 /html 

参照组2:[将耗时代码用 try 包围,内联耗时代码]

 !DOCTYPEhtml 
 html 
 head 
 title 2在try中内联代码的耗时情况 /title 
 script 
!function(){
//在 try 中内联代码的耗时情况
vart=newDate();
//耗时代码开始
for(vari=0;i ;i++){
varp=i%2;
//耗时代码结束
thrownewError();
}catch(e){
document.write(newDate()–t);
 /script 
 /head 
 body 
 /body 
 /html 

参照组3:[将耗时代码用 try 包围,外联耗时代码]

 !DOCTYPEhtml 
 html 
 head 
 title 3在try中内联代码的耗时情况 /title 
 script 
!function(){
functionrun(){
//耗时代码开始
for(vari=0;i ;i++){
varp=i%2;
//耗时代码结束
//在 try 中内联代码的耗时情况
vart=newDate();
run();
thrownewError();
}catch(e){
document.write(newDate()–t);
 /script 
 /head 
 body 
 /body 
 /html 

参照组4:[将耗时代码用 catch 包围,内联耗时代码]

 !DOCTYPEhtml 
 html 
 head 
 title 4在catch中内联代码的耗时情况 /title 
 script 
!function(){
//在 catch 中内联代码的耗时情况
vart=newDate();
thrownewError();
}catch(e){
//耗时代码开始
for(vari=0;i ;i++){
varp=i%2;
//耗时代码结束
document.write(newDate()–t);
 /script 
 /head 
 body 
 /body 
 /html 

参照组5:[将耗时代码用 catch 包围,外联耗时代码]

 !DOCTYPEhtml 
 html 
 head 
 title 5在catch中内联代码的耗时情况 /title 
 script 
!function(){
functionrun(){
//耗时代码开始
for(vari=0;i ;i++){
varp=i%2;
//耗时代码结束
//在 catch 中内联代码的耗时情况
vart=newDate();
thrownewError();
}catch(e){
run();
document.write(newDate()–t);
 /script 
 /head 
 body 
 /body 
 /html 

运行结果(只选取了 Chrome 作为示例)

使用 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 的情况耗时
vart=newDate();
//耗时代码开始
for(vari=0;i ;i++){
varp=i%2;
//耗时代码结束
document.write(newDate()–t);
}catch(e){
!function(){
//无 try catch 的情况耗时
vart=newDate();
//耗时代码开始
for(vari=0;i ;i++){
varp=i%2;
//耗时代码结束
document.write(newDate()–t);
}();

其实原因很简单

只要把代码改为这样 耗时就降下来了:

!function(){
!function(){
//无 try catch 的情况耗时
vart=newDate();
//耗时代码开始
for(vari=0;i ;i++){
varp=i%2;
//耗时代码结束
document.write(newDate()–t);
}catch(e){
}();

总结

以上就是关于使用try catch对代码运行性能影响的全部内容,希望本文的内容对大家学习或者使用Javascript能带来一定的帮助,如果有疑问大家可以留言交流。


分享新闻到:

更多阅读

小程序制作要多少钱_JS顶用try catch对代码

行业动态 2021-01-12
JS选用try catch对编码运作的特性危害剖析 要捕捉JavaScript编码中的出现异常一般会选用 ...
查看全文

广州凡科互联网科技股份有限公司招聘广

行业动态 2021-01-12
招聘人数:8职位信息岗位职责:1、负责Facebook、google等平台的广告投放及优化;2、整理分析广...
查看全文

微信小程序售卖价格_使用 NodeJS+Express 开

行业动态 2021-01-12
应用 NodeJS+Express 开发设计服务端的简易详细介绍 本文关键详细介绍了应用 NodeJS+Express...
查看全文
返回全部新闻


区域站点: 南丰县小程序前端设计   南宫市有赞小程序   囊谦县小程序下载安装   南和县小程序模板源码   南华县小程序前端设计   南江县有赞小程序   南京市小程序下载安装   南靖县小程序模板源码   南康市小程序前端设计   南乐县有赞小程序   南陵县小程序下载安装   南宁市小程序模板源码   南平市小程序前端设计   南皮县有赞小程序   南市区小程序下载安装   南通市小程序模板源码   南投县小程序前端设计   南雄市有赞小程序   南溪县小程序下载安装   南阳市小程序模板源码   南漳县小程序前端设计   南召县有赞小程序   南郑县小程序下载安装   那坡县小程序模板源码   那曲县小程序前端设计   纳雍县有赞小程序   讷河市小程序下载安装   内黄县小程序模板源码   内江市小程序前端设计   内丘县有赞小程序   内乡县小程序下载安装   嫩江市小程序模板源码   聂荣县小程序前端设计   尼玛县有赞小程序   尼木县小程序下载安装   宁安市小程序模板源码   宁波市小程序前端设计   宁城县有赞小程序   宁德市小程序下载安装   宁都县小程序模板源码   宁国市小程序前端设计   宁海县有赞小程序   宁化县小程序下载安装   宁晋县小程序模板源码   宁陵县小程序前端设计   宁明县有赞小程序   宁南县小程序下载安装   宁强县小程序模板源码   宁陕县小程序前端设计   宁武县有赞小程序   宁乡市小程序下载安装   宁阳县小程序模板源码   宁远县小程序前端设计   农安县有赞小程序   磐安县小程序下载安装   盘锦市小程序模板源码   盘山县小程序前端设计   磐石市有赞小程序   盘州市小程序下载安装   蓬安县小程序模板源码   澎湖县小程序前端设计   蓬莱市有赞小程序   彭山县小程序下载安装   蓬溪县小程序模板源码   彭阳县小程序前端设计   彭泽县有赞小程序   彭州市小程序下载安装   偏关县小程序模板源码   平安县小程序前端设计   平昌县有赞小程序   平定县小程序下载安装   屏东县小程序模板源码   平度市小程序前端设计   平果县有赞小程序   平和县小程序下载安装   平湖市小程序模板源码   平江县小程序前端设计   平乐县有赞小程序   平凉市小程序下载安装   平利县小程序模板源码   平罗县小程序前端设计   平陆县有赞小程序   屏南县小程序下载安装   平泉市小程序模板源码   屏山县小程序前端设计   平顺县有赞小程序   平塘县小程序下载安装   平潭县小程序模板源码   平武县小程序前端设计   萍乡市有赞小程序   平乡县小程序下载安装   平阳县小程序模板源码   平遥县小程序前端设计   平阴县有赞小程序   平邑县小程序下载安装   平远县小程序模板源码   平舆县小程序前端设计   皮山县有赞小程序   普安县小程序下载安装   浦北县小程序模板源码   浦城县小程序前端设计   普洱市有赞小程序   普格县小程序下载安装   浦江县小程序模板源码   普兰县小程序前端设计   普宁市有赞小程序   莆田市小程序下载安装   迁安市小程序模板源码   乾安县小程序前端设计   潜江市有赞小程序   潜山市小程序下载安装  

友情链接: 微信小程序开发框 凡科小程序 免费打卡小程序怎 微信小程序 游戏 手机版

Copyright © 2002-2020 小程序下载安装_小程序模板源码_小程序前端设计_有赞小程序_线上签到小程序 版权所有 (网站地图) 备案号:粤ICP备10235580号