这个网站上已经存在很多性能问题,但是我发现几乎所有这些都是特定于问题且相当狭窄的问题.几乎所有人都重复这些建议,以避免过早优化.
我们假设:
我在这里寻找的是在一个关键算法中挤出最后几个百分点的策略和技巧,除此之外别无他法.
理想情况下,尝试使答案语言不可知,并在适用的情况下指出建议策略的任何缺点.
我将使用我自己的初步建议添加回复,并期待Stack Overflow社区可以想到的任何其他内容.
这是一位高级经理提出的面试问题.
哪个更快?
while(1) {
// Some code
}
Run Code Online (Sandbox Code Playgroud)
要么
while(2) {
//Some code
}
Run Code Online (Sandbox Code Playgroud)
我说两者都有相同的执行速度,因为里面的表达式while应该最终评估为true或false.在这种情况下,两者都评估,true并且条件内没有额外的条件指令while.因此,两者都具有相同的执行速度,而我更喜欢(1).
但采访者自信地说:"检查你的基础知识.while(1)比快while(2)." (他没有测试我的信心)
这是真的?
标准while(true)循环和for(;;)?之间有什么区别?
编译后是否存在或将两者都映射到相同的字节码?
可能重复:
"for(;;)"是否比"while(TRUE)"快?如果没有,为什么人们会使用它?
for(;;)或while(true) - 哪个是正确的C#无限循环?
while(true)(或while(1))和for(;;)?之间有任何明显的区别吗?有没有理由选择一个而不是另一个?
我在现有的代码中发现了一个空的for语句,我想知道它的作用是什么,它是否"安全".这只是感觉不对.
for(;;)
{
//some if statements and a case statement
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我看到了我读过的许多书中使用的不同约定,你可以在其中创建具有循环结构的无限循环,例如:
while()
foo();
for(;;)
foo();
Run Code Online (Sandbox Code Playgroud)
但实际上,我应该知道的差异是什么?哪一个更好?
我想知道两者之间的区别for(;;)和while(1)执行相同的功能有什么区别?编译速度会有什么不同吗?
我对for(;;)构造感到困惑.我认为这是一种无限循环的速记形式,但我不能确定.
这是代码:
for(;;)
{
//whatever statements
}
Run Code Online (Sandbox Code Playgroud) c ×4
c++ ×4
for-loop ×3
while-loop ×3
loops ×2
performance ×2
.net ×1
c# ×1
java ×1
kr-c ×1
optimization ×1