//比如我想要一个检测算法的时间函数,并且把这个函数封装起来,以便其他函数的调用,详细说明:这里我定义了两个数组,一个是10000以内的自然数数,另一个是10000以内能被7整除的数,然后我把两个数组用一种算法(这里用最笨的双遍历那种算法)把两个数组中的相同元素传入另一个数组。最后调用时间检测函数,查看这种算法的时间,但是有一个问题,就是如何在时间检测函数的内部去执行他的参数(cufunc),也就是那个要检测的函数。下面是代码//这里是时间检测函数function Time_detection(cufunc){ var start = new Date().getTime();//起始时间 console.log(cufunc);//这里并不能执行那个函数!! var end = new Date().getTime();//接受时间return (end - start)+"ms";//返回函数执行需要时间}function main(arr1,arr2){ var arrn=new Array(); var k=0; for(i=0;i<arr1.length;i++){ for(j=0;j<arr2.length;j++){ if(arr1[i]==arr2[j]){ arrn.push(arr2[j]); } } }return arrn;}function matharr(){ var b=new Array; for(i=0;i<10000;i++){ b[i]=i;} return b; }function matharr2(){ var b=new Array; for(i=0;i<10000;i++){ if(i%7==0){b[i]=i} } return b; } var time=Time_detection(main(matharr(),matharr2())); document.write(time)//然后如果知道更好的检测函数执行时间的方法分享给我更好!谢谢!
1 回答
已采纳
Caballarii
TA贡献1123条经验 获得超629个赞
console.log(cufunc);//这里并不能执行那个函数!!
这一行,首先分号写成中文的了会报错,其次,执行函数需要加括号,cufunc();
这样还是出不了结果,是因为
var time=Time_detection(main(matharr(),matharr2()));
你写的这句话里面,main(matharr(),matharr2())这样写得到的结果是main函数里return的那个值,而不是main函数本身,你需要在那个计时函数里执行main,那就应该把main函数本身传进去
var time=Time_detection(main)
这样,感受一下
var time=Time_detection(main())
这样和上面的区别,但main函数还需要参数,那我们需要用到bind方法
var time=Time_detection(main.bind(this,matharr(),matharr2()));
这样就可以得到结果了
添加回答
举报
0/150
提交
取消