2012-08-03 97 views
3

this paper中,有两种情况被用于比较算法 - 整数和浮点数。浮点合并和整数合并有什么区别?

我理解这些数据类型在存储方面的差异,但我不确定为什么它们之间存在差异。

为什么会出现下面两种情况

  • 之间的性能差异使用归并排序的整数
  • 使用归并排序的浮点

我明白,这归结在这两种情况下加快比较,问题是为什么这些速度可能会有所不同?

回答

3

本文在第4节“结论”中指出,“合并CPU上的整数的执行时间比CPU上的浮点执行时间快2.5倍”。在测量中使用的Intel Nehalem Xeon E5530,这一巨大差异令人惊讶。但是,本文不提供有关源代码,合并中使用的特定指令或处理器功能,编译器版本或其他使用的工具的信息。如果处理器得到有效使用,整数合并与浮点合并的性能应该只有很小的差异。因此,测试中使用的浮点代码似乎很可能是效率低下的,并且是所用工具较差的指标,而不是处理器的任何缺点。

0

合并排序有一个相当多的指令内循环。比较花车可能会稍微昂贵一些,但只需要1-2个周期。您不会注意到合并代码数量的差异。

比较花车是硬件加速和快速相比,你在做的一切算法。

此外,比较可能会重叠其他指令,因此壁钟时间的差异可能完全为零(或不)。