js 函数性能比较方法
在学习js过程中,经常会遇到同样一个功能点这样实现也可以,那样实现也可以。但是哪个方式最优呢?自己写了一个简短的proferencesCompare函数。代码如下:
/**
*函数性能比较
*@paramfns要比较的函数数组
*@args每个要比较函数在执行的时候传入的参数,可以是数组,或者被调用后返回数组类型
*@repeatCount每个函数重复执行的次数,多次执行拉开差距。默认值10000
*
*@return[{runTime:执行repeatCount次总时间,repeatCount:重复执行次数,name:函数名称,chrome是函数名,IE由于不支持funciton.name,所以默认fn+函数在fns中index}]
**/
functionproferencesCompare(fns,args,repeatCount){
vartmpArgs,tmpFns;
varresult=[];
varstarTime,endTime;
vari=0;
varrepeatCount=repeatCount||10000;
varisFunction=false;
if(fns===undefined){
throwError('Musthavethecomparefunciton');
}
vartypeName=typeofargs;
//检测传入的args是否能够返回array类型数据
if(typeName==='function'){
tmpArgs=args();
isFunction=true;
}
if(typeName==='number'){
tmpArgs=[];
repeatCount=args;
}
//检测args是否为array
if(Object.prototype.toString.call(tmpArgs)!=='[objectArray]'){
throwError('Thetestargsismustaarrayorafunctionwhichreturnthearray');
}
varlen=fns.length;
for(;i
使用例子如下:
varfn1=function(){
vara;
return!a;
}
varfn2=function(){
vara;
returna===undefined;
}
varfn3=function(){
vara;
returna==undefined;
}
varresult=proferencesCompare([fn1,fn2,fn3,fn3,fn2,fn1],1000000000);
这个例子主要比较对于函数中判断对象是否为undefined的几种实现方式的性能比较。
chrome:
结果显示其实性能差不多。
下面是其他同学的补充
快速比较代码执行效率的方法
测试效率可以使用Stopwatch:
Stopwatchsw=newStopwatch();
sw.Start();//写在要执行的代码前面
sw.Stop();//写在要执行的代码结尾
sw.Elapsed//得到代码执行时间
核心函数
int[]array={15,20,10,3,5};
Stopwatchsw=newStopwatch();
sw.Start();
for(inti=0;iarray[j]){
inttemp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
sw.Stop();
Console.WriteLine(sw.Elapsed);
到此这篇关于js函数性能比较方法的文章就介绍到这了,更多相关js函数性能内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。