我使用 JavaScript,但我总是想知道所有语言的这一点。
我这样做会获得更好的性能吗:
var i = 0;
if(j < 0)
{
i = 1;
}
或这个?
var i;
if(j < 0)
{
i = 1;
}
else
{
i = 0;
}
有 50% 的机会拥有j < 0
我使用 JavaScript,但我总是想知道所有语言的这一点。
我这样做会获得更好的性能吗:
var i = 0;
if(j < 0)
{
i = 1;
}
或这个?
var i;
if(j < 0)
{
i = 1;
}
else
{
i = 0;
}
有 50% 的机会拥有j < 0
这将取决于 javascript 引擎的实现,至少如果您为 Web 编写代码,它是您无法控制的。
一个浏览器使用第一个版本的代码可能更快,另一个使用第二个版本。明天它可能会改变。
除非您已将这一行代码确定为任务的瓶颈,否则不要优化此类事情。
您可能想阅读何时优化。
您将更好地编写可读且设计良好的代码,并让浏览器供应商担心机器级别的优化。
您应该优化的是算法,而不是特定于语言的结构。
您的代码都没有太大的区别。当然取决于 JS 引擎,但今天的引擎非常先进,并且对代码进行了很好的优化(尤其是 chrome 和 node.js 上的 V8)。
对其进行基准测试。您console.time('label'); console.timeEnd('label')
至少可以在 Chrome 中使用 simple 。
在我看来,您的代码看起来很丑,而且很臃肿。没有内容就消耗了大量空间。我更喜欢这种方法,因为它的读取速度更快,并且您应该像关心性能一样关心可读性:
var i;
if(j < 0) {
i = 1;
} else {
i = 0;
}
您还可以访问三元运算符:
var i = j < 0 ? 1 : 0;
如果你不嵌套它是可读的。再一次 - 在性能方面,所有这些都是平等的,并且可能会相差一两毫秒,所以在这种简单的情况下你不应该关心性能。关心可读性:)
此外,性能将取决于您的 j 值。如果优化器会看到您设置了j to 1
. 它将使整个代码短路并简单地设置i = 0
. 恕我直言,在这种简单的情况下,除了可读性之外,花时间寻找改进是没有用的:)。