|
1
45
它更多地是在C++民俗中,手工优化在特定编译器的特定版本上工作一次,然后被当作一种区分所有者和普通群体的知识。这是垃圾。貌相是真理。 |
|
2
17
可能不会,但如果它这样做了,编译器可能会自动为您进行优化。因此,请以任何方式使代码最具可读性。 |
|
3
10
剖析器只有 你们可以向任何权威宣称一种方法比另一种方法快或慢。 |
|
|
4
8
您给出的示例在C++中绝对不存在性能差异,并且我怀疑它们也不会在Python中有所不同。
在某些体系结构中,后者的速度更快,因为递减变量的动作将设置零标志,然后可以在跳转(如果不是零)指令中检查零标志,从而一次性提供循环迭代和条件。前一个示例需要执行显式比较或减法来设置标志,然后基于该标志跳转。 然而 |
|
5
5
这是因为,当一个简单的布尔值为FALSE时,第一个可以立即停止——查询只需在布尔值为TRUE时运行,而第二个将运行 总是 运行查询。
最糟糕的是当你有一个函数作为一个条件,而这个函数有一些副作用,这些副作用是代码中其他地方暗中期望的。因此,当你进行小优化时,副作用只会发生 一些 当然,你的代码会以奇怪的方式中断。但这有点相切。对你的问题的简短回答是“有时,但通常并不重要。” |
|
|
6
4
只有 您可以比较每个选项创建的程序集,对于这样的微优化来说,这不应该是不可能的。对你的硬件平台的命令进行一点研究,可以给你一个不错的主意,如果这个改变有什么不同,以及它可能如何表现不同。我假设您将计算移动的数量并比较示例中的命令。
|
|
7
3
这是一个最好的做法,不要走你的方式进行优化调整,这将给你带来微不足道的好处(假设它) 是 |
|
|
8
2
任何sane编译器都将以相同的方式实现这两种功能。如果在某些体系结构上一个比另一个快,编译器将以这种方式对其进行优化。 |
|
|
9
1
与0相比,速度非常快,因此这实际上会稍微快一点:
|
|
|
10
0
我谦恭地建议,在某些体系结构上的某些编译器上,以下内容可以比变体更有效地减少:
常数 迭代。 正如许多评论所建议的那样,编译器可以很好地为您优化循环(编译器优化人员已经花了很多时间考虑它)。易读的代码可能更有价值,但YMMV!
希望这有助于&干杯 |
|
11
0
今天,在一个好的编译器上,一点也没有。
然而,我们不应该盲目地忽视绩效。响应能力仍然很重要,计算时间也很重要。尤其是在编写库代码时,您不知道何时会连续被调用200万次。 此外,并非所有平台都是平等创建的。嵌入式平台在低(er)处理能力和实时处理要求的基础上,常常会遇到不合标准的优化器。 在桌面/服务器平台上,重心已经转移到实现更好的扩展算法的封装良好的复杂性。 只有当它们损害了其他东西,如可读性、复杂性或可维护性时,它们才是不好的。在其他条件相同的情况下,为什么不选择更快的呢?
曾经有一段时间,在x86上以零结束循环(例如倒计时)实际上可以显著改善紧密循环,例如
|
|
12
0
提供的优化只会针对给定的编译器进行更多优化(可能)。抽象地说,它应该生成相同的代码。 如果您正在进行微优化(假定满足了进行微优化的要求),那么您的第一步应该是查看生成的程序集,然后是针对您的体系结构的程序集手册。 你的 编译器/架构组合。 需要 我的处理器的最后一个周期。传统上,图形或科学计算是你需要这类东西的地方[*]。 *我知道有一个程序经过几个月的优化 在现代机器上,仍然需要数月的时间来处理数据。单个数据集的运行时在周范围内。有相当多的数据可供使用。。。。 |
|
13
-1
这绝对是一个微观优化的案例,真的不需要做。
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |