【问题标题】:What switch statement produces the least efficient machine code?什么 switch 语句产生效率最低的机器代码?
【发布时间】:2012-01-14 09:34:02
【问题描述】:

我的一个测试中有一个问题要求我回答哪个 switch 语句产生的机器代码效率最低。可能的答案是 O4、O1、O2 或 O3。我不知道那些应该是什么意思。

【问题讨论】:

  • 取决于编译器和语言?需要上下文
  • 对不起,我认为您误读了这个问题(可能不是关于 switch 语句,而是关于编译器开关),而您的问题在这里完全无法回答 - 上下文、代码、语言都丢失了。
  • @Paul Manta: O1, O2, ... 是编译器开关,而不是 C 风格的开关语句。
  • 你必须从他们提出这类“问题”的地方运行。尽可能快地跑。
  • 记住编译器开关似乎完全是浪费时间。这就是文档的用途。真正的诀窍是理解文档的含义。

标签: performance switch-statement machine-code


【解决方案1】:

GCCOptions That Control Optimization

-O -O1 优化。优化编译需要更多时间,大型函数需要更多内存。

-O2 进一步优化。 GCC 执行几乎所有支持的优化,不涉及空间速度折衷。与 -O 相比,此选项增加了编译时间和生成代码的性能。

-O3 进一步优化

-Os 优化大小。

-Ofast 无视严格的标准合规性。 -Ofast 启用所有 -O3 优化。它还支持并非对所有符合标准的程序都有效的优化

【讨论】:

  • 我认为 gcc 中的选项编号是模三,所以 -O4 真的是 -O0。很容易测试...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-14
  • 2016-05-08
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 2012-02-03
  • 1970-01-01
相关资源
最近更新 更多