我使用JavaScript,但我总是想知道所有语言。
这样做会有更好的表现:
var i = 0;
if(j < 0)
{
i = 1;
}
还是这个?
var i;
if(j < 0)
{
i = 1;
}
else
{
i = 0;
}
有50%的机会拥有j < 0
答案 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
即可。恕我直言,在这种简单的情况下,除了可读性之外,花时间寻找改进是没有用的。)。