【问题标题】:Insertion sort is slower when >= is used for element comparison than >, why?当 >= 用于元素比较时,插入排序比 > 慢,为什么?
【发布时间】:2013-02-03 03:16:01
【问题描述】:

我在测试一些排序算法并测量它们的执行时间,发现了一些很奇怪的东西并提出了问题,>= 比 > 快吗?

【问题讨论】:

  • 请注意您更改了排序算法本身。如果您想检查这两者,正确的 while 语句将是:`while (j>-1 && aux.key Positions[j].key)
  • 你在比较不同的算法。
  • 这实际上是一个有趣的问题,但是您给它起了一个标题,使它看起来像一个无趣的问题。在编译代码中,在没有重载运算符的情况下,>=> 应该花费相同的时间来测量噪声(实际上是从 BGTBGE 机器指令的变化)。但是,您的更改使排序算法的行为有所不同,并且 很容易对其运行时间产生很大影响
  • @Zack 那么有趣吗?如果测量是正确的并且时间不同的话。
  • @Zack 但算法不正确。

标签: c++ c algorithm sorting


【解决方案1】:

不,在任何现代硬件上 > 和 >= 之间没有性能差异,任何时间增量都是人为的,纯属巧合。你确定代码 sn-ps 实际上做同样的事情吗?您的编译器设置是否设置为最大化优化(在调试模式下对代码进行计时没有用)?

顺便说一句,你可能不应该在 C++ 中以“T”开头你的类型名称。这不是帕斯卡^^

【讨论】:

    【解决方案2】:

    特定于 CPU 架构。无论如何,如何在现代处理器上测量它?

    但是,如果 key 不是真正的 int(即您将其匿名化为一个)并且 差很多

    在您的特定算法中,在

    【讨论】:

      猜你喜欢
      • 2016-02-18
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      • 1970-01-01
      • 2020-09-15
      • 2016-02-01
      • 1970-01-01
      • 2012-10-22
      相关资源
      最近更新 更多