相关疑难解决方法(0)

最后的性能优化策略

这个网站上已经存在很多性能问题,但是我发现几乎所有这些都是特定于问题且相当狭窄的问题.几乎所有人都重复这些建议,以避免过早优化.

我们假设:

  • 代码已经正常工作
  • 所选择的算法对于问题的情况已经是最佳的
  • 已经测量了代码,并且已经隔离了违规的例程
  • 所有优化尝试也将被测量,以确保它们不会使事情变得更糟

我在这里寻找的是在一个关键算法中挤出最后几个百分点的策略和技巧,除此之外别无他法.

理想情况下,尝试使答案语言不可知,并在适用的情况下指出建议策略的任何缺点.

我将使用我自己的初步建议添加回复,并期待Stack Overflow社区可以想到的任何其他内容.

language-agnostic optimization performance

600
推荐指数
28
解决办法
8万
查看次数

哪个更快:while(1)或while(2)?

这是一位高级经理提出的面试问题.

哪个更快?

while(1) {
    // Some code
}
Run Code Online (Sandbox Code Playgroud)

要么

while(2) {
    //Some code
}
Run Code Online (Sandbox Code Playgroud)

我说两者都有相同的执行速度,因为里面的表达式while应该最终评估为truefalse.在这种情况下,两者都评估,true并且条件内没有额外的条件指令while.因此,两者都具有相同的执行速度,而我更喜欢(1).

但采访者自信地说:"检查你的基础知识.while(1)比快while(2)." (他没有测试我的信心)

这是真的?

另请参阅:"for(;;)"是否比"while(TRUE)"快?如果没有,为什么人们会使用它?

c performance while-loop

582
推荐指数
15
解决办法
9万
查看次数

Java:for(;;)vs. while(true)

标准while(true)循环和for(;;)?之间有什么区别?

编译后是否存在或将两者都映射到相同的字节码?

java for-loop while-loop

60
推荐指数
4
解决办法
2万
查看次数

C/C++中的无限循环

有几种可能性来进行无限循环,这里有一些我会选择:

  • for(;;) {}
  • while(1) {}/while(true) {}
  • do {} while(1)/do {} while(true)

是否有某种形式应该选择?现代编译器是否会在中间和最后一个语句之间产生影响,或者它是否意识到它是一个无限循环并完全跳过检查部分?

编辑:因为已经提到我忘记了goto,但这是因为我根本不喜欢它作为一个命令.

Edit2:我对从kernel.org获取的最新版本做了一些grep.我确实看起来随着时间的推移没有太大变化(至少在内核中) 在此输入图像描述

c c++ loops infinite-loop

57
推荐指数
7
解决办法
9万
查看次数

功能声明:K&R与ANSI

K&R函数声明和ANSI函数声明之间有什么区别?

c kr-c

35
推荐指数
2
解决办法
3万
查看次数

while(true)与(;;)

可能重复:
"for(;;)"是否比"while(TRUE)"快?如果没有,为什么人们会使用它?
for(;;)或while(true) - 哪个是正确的C#无限循环?

while(true)(或while(1))和for(;;)?之间有任何明显的区别吗?有没有理由选择一个而不是另一个?

c++ infinite-loop

27
推荐指数
2
解决办法
2万
查看次数

在C#中是(;;)安全的,它真正做了什么?

我在现有的代码中发现了一个空的for语句,我想知道它的作用是什么,它是否"安全".这只是感觉不对.

for(;;)
{
   //some if statements and a case statement
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

.net c# for-loop

12
推荐指数
2
解决办法
750
查看次数

无限while循环和for循环之间有什么区别?

我看到了我读过的许多书中使用的不同约定,你可以在其中创建具有循环结构的无限循环,例如:

while()
   foo();
for(;;)
   foo();
Run Code Online (Sandbox Code Playgroud)

但实际上,我应该知道的差异是什么?哪一个更好?

c++ loops for-loop while-loop

6
推荐指数
1
解决办法
1823
查看次数

for(;;)和while(1)之间有什么区别?

可能重复:
"for(;;)"是否比"while(TRUE)"快?如果没有,为什么人们会使用它?

我想知道两者之间的区别for(;;)while(1)执行相同的功能有什么区别?编译速度会有什么不同吗?

c++ infinite-loop

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

对(;;)意味着什么?

我对for(;;)构造感到困惑.我认为这是一种无限循环的速记形式,但我不能确定.

这是代码:

for(;;)
{
    //whatever statements
}
Run Code Online (Sandbox Code Playgroud)

c

4
推荐指数
1
解决办法
419
查看次数