【问题标题】:What code is faster? [closed]什么代码更快? [关闭]
【发布时间】:2017-01-18 02:54:20
【问题描述】:

我们在 c 中有以下 2 个 sn-ps 代码,它们执行相同的任务。

代码 #1:

int b = 0;
for (int i = 0; i < len; i++)
{
    if (x1 == x0[i])
    {
        if (y1 == y0[i])
        {
           b = 1;
           break;
        }
    }
}

代码 #2:

int b = 0;
for (int i = 0; i < len; i++)
{
    if (x1 == x0[i] && y1 == y0[i])
    {
        b = 1;
        break;
    }
}

CODE #1CODE #2 哪个更快? 我真的在互联网上搜索了答案,但没有找到任何东西。

【问题讨论】:

  • 那么我们为什么要为你做功课呢?配置文件/基准,读取机器/汇编代码计数周期。
  • 这取决于那天宇宙的感受。选择最适合这种情况的一种。
  • 他们是一样的。等速。您可以在反汇编中查看差异。
  • 两个代码相同。有关详细信息,请参阅它们的汇编代码。或者只是阅读有关短路评估的信息。
  • 家庭作业的定义:“为特定事件或情况做的工作或学习。”在这种情况下,准备是为了提问。询问“哪个更快”的问题总是通过做一个基准来解决。

标签: c performance optimization


【解决方案1】:

无!

它们都是相同的代码。
它们的写法不同,但采用完全相同的指令和比较来获得结果,因此它们是相同的。
所以,没有一个比另一个快。

【讨论】:

  • ...假设任何合理的现代优化编译器都可以看到它们是相同的。
  • 实际上不,即使是未优化的编译器/解释器也会以 f(n) = O(n) 结束,并且在给定相同输入的情况下将执行相同数量的迭代。即使有 +/- 1 条指令左右的差异,仍然是一个常数 K,不会以任何方式影响性能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 2012-10-28
  • 2016-11-20
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 2013-05-18
相关资源
最近更新 更多