如何在极简主义条件声明中获得更好的表现?

时间:2013-11-05 10:04:37

标签: javascript performance

我使用JavaScript,但我总是想知道所有语言。

这样做会有更好的表现:

var i = 0;
if(j < 0) 
{
   i = 1;
}

还是这个?

var i;
if(j < 0) 
{
    i = 1;
}
else 
{
    i = 0;
}

有50%的机会拥有j < 0

2 个答案:

答案 0 :(得分:4)

这将取决于javascript引擎的实现,至少如果您为Web编写代码,则无法控制。

第一个版本的代码可能会更快一个浏览器,第二个版本可能会更快。明天它可能会改变。

除非您将这一行代码固定为任务的瓶颈,否则请不要优化此类内容。

您可能需要阅读when to optimize

您最好编写可读且设计良好的代码,并让浏览器供应商了解机器级优化。

您应该优化的是算法,而不是语言特定的结构。

答案 1 :(得分:2)

你的代码都没有太大区别。当然取决于JS引擎,但今天的引擎非常先进并且非常好地优化了代码(尤其是chrome和node.js上的V8)。

基准测试。您至少可以在Chrome中使用简单的console.time('label'); console.timeEnd('label')

在我看来,你的代码看起来很丑陋,就像一个臃肿。消耗大量空间而没有内容。我更喜欢这种方法,因为它读得快得多,你应该关心可读性性能

var i;    
if(j < 0) {
    i = 1;
} else {
    i = 0;
}

您还可以访问三元运算符:

var i = j < 0 ? 1 : 0;

如果你没有嵌套它是可读的。再次 - 性能明智,所有这些都是相同的,并且可能会有一两毫秒的差异,所以你不应该在这么简单的情况下关心性能。关注可读性:)

此外,性能取决于您的j值。如果优化器会看到您设置了j to 1。它会使整个代码短路,只需设置i = 0即可。恕我直言,在这种简单的情况下,除了可读性之外,花时间寻找改进是没有用的。)。