相关疑难解决方法(0)

对象是空的吗?

检查对象是否为空的最快方法是什么?

有没有比这更快更好的方法:

function count_obj(obj){
    var i = 0;
    for(var key in obj){
        ++i;
    }

    return i;
}
Run Code Online (Sandbox Code Playgroud)

javascript

482
推荐指数
11
解决办法
64万
查看次数

微观优化值得花时间吗?

我是一名PHP开发人员,我一直认为微优化不值得花时间.如果你真的需要额外的性能,你可以编写你的软件,使其在架构上更快,或者你编写一个C++扩展来处理慢速任务(或者更好的是,使用HipHop编译代码).然而,今天一位工作伙伴告诉我,这有很大的不同

is_array($array)
Run Code Online (Sandbox Code Playgroud)

和

$array === (array) $array
Run Code Online (Sandbox Code Playgroud)

而且我就像"呃,这真是一个毫无意义的比较",但他不同意我的看法......他是我们公司最好的开发人员,并且负责一个每天大约有5000万次SQL查询的网站 - - 例如.所以,我在这里想知道:他可能是错的还是微优化真的值得花时间和时间?

php optimization performance

37
推荐指数
4
解决办法
9729
查看次数

解除引用变量的闭包是否有用?

我不确定它是否或何时对解除引用变量有用(提高性能).

var x = a.b.c.d[some_key].f;
while (loop) {
    do_something_with(x);
}
Run Code Online (Sandbox Code Playgroud)

好像比

while (loop) {
    do_somthing_with(a.b.c.d[some_key].f);
}
Run Code Online (Sandbox Code Playgroud)

是需要还是由智能JavaScript引擎自动完成?

但我的实际问题是我是否应该这样做,例如,在图书馆.

(function() {
    var slice = Array.prototype.slice;

    Function.prototype.x = function x() {
        var args = slice.call(arguments, 0);
        ...
    };
})();
Run Code Online (Sandbox Code Playgroud)

要不就

Function.prototype.x = function x() {
    var args = Array.prototype.slice.call(arguments, 0);
    ...
};
Run Code Online (Sandbox Code Playgroud)

引擎无法自动改进,因为它不知道Array.prototype.slice在运行时是否可能会发生变化.

那么:创建一个闭包来创建切片函数的本地引用会使脚本更快吗?或者额外的闭包范围是否比访问Array属性"prototype"的属性"slice"慢?

javascript closures dereference

11
推荐指数
1
解决办法
1708
查看次数