什么是JavaScript';呼叫';它与效率有什么关系?

什么是JavaScript';呼叫';它与效率有什么关系?,javascript,jquery,optimization,query-optimization,Javascript,Jquery,Optimization,Query Optimization,我正在对我制作的JavaScript函数进行测试和优化。我注意到我在Firefox(FireUnit)中使用的插件返回了分析期间完成的调用数。这是脚本进行的http调用数吗 此外,您能否概述/讨论/评分/解释在一个好的范围内考虑了多少个电话?可能通过给出示例或常用JavaScript函数,如下拉菜单、隐藏/显示图像、图像幻灯片功能等 调用是否表示“工作”的任何度量,或者仅仅表示执行的迭代?在这种情况下,调用是函数被调用的次数 function foo() { }; foo(); foo();

我正在对我制作的JavaScript函数进行测试和优化。我注意到我在Firefox(FireUnit)中使用的插件返回了分析期间完成的调用数。这是脚本进行的http调用数吗

此外,您能否概述/讨论/评分/解释在一个好的范围内考虑了多少个电话?可能通过给出示例或常用JavaScript函数,如下拉菜单、隐藏/显示图像、图像幻灯片功能等


调用是否表示“工作”的任何度量,或者仅仅表示执行的迭代?

在这种情况下,调用是函数被调用的次数

function foo() {

};

foo();
foo();
在上面的示例中,函数foo被调用了两次

“什么是好的通话范围”没有答案。像
jQuery
这样的函数很可能每页被调用很多次,而像
init()
这样的函数只被调用一次

更好地表示功能效率的是它们的执行时间;这会记录函数执行所花费的时间(几乎总是以毫秒为单位)。可以对执行时间较长的函数进行优化,以减少它们的执行时间并提高程序的效率


为了更好地利用您的时间,您可以将这两种统计数据(调用计数和执行时间)结合起来,并研究如何优化调用次数多、执行时间长的函数。

调用次数表示给定函数的运行、调用或执行次数。通话次数没有很好的范围。此数字为您提供了两个最重要的信息:

首先,如果某个函数只被调用一次,而另一个函数被调用100次,那么后者的每次优化都比前者重要100倍。优化一个只调用一次的函数通常是浪费时间的,但是如果一个函数调用了很多次,那么看看它是否太慢可能很重要

从函数调用的数量中可以看到的第二件事是,如果某个函数被调用数百次,而事实上它总是有相同的结果,那么这可能意味着您在循环中调用它一次,并且将值存储在变量中就足够了

例如,这将调用expensiveFunction 1000次:

for (i = 0; i < 1000; i++) {
    array[i] = i + expensiveFunction();
}
(i=0;i<1000;i++)的
{
数组[i]=i+expensiveFunction();
}
虽然这只会叫它一次:

value = expensiveFunction();
for (i = 0; i < 1000; i++) {
    array[i] = i + value;
}
value=expensiveFunction();
对于(i=0;i<1000;i++){
数组[i]=i+值;
}

看到一些函数被多次调用可能暗示您有一些类似于该示例的代码。当然,您不能每次都缓存该值,但有时您可以这样做,并且知道函数调用的数量非常有用。

我认为调用意味着函数调用。一个特定函数被调用了多少次。他关于有多少个问题被认为是好的子问题是什么?我想这取决于函数本身。调用只会告诉您在多大程度上改进了一个函数的执行。。。在电话号码变得极低之前,电话本身几乎没有任何意义。电话本身是否代表任何真正的“成本”?或者,它是否依赖于被调用的函数?@Eric:“调用本身是否代表任何真正的‘成本’?”-好的,当您调用函数时,其中的所有代码都将运行。如果其中一些代码不需要运行,那么这是一种“成本”,因为不必要的工作正在被完成。此外,一段Javascript代码调用的纯粹数量与代码的“好”或“坏”没有多大关系。有些代码可能会进行3次方法调用,但设计很差,因此运行效率很低;其他一些代码可能会进行数千次方法调用,但效率很高。@Eric:我已经扩展了我的答案。希望它更有意义。