【问题标题】:What is the difference between Base-2 and Base-10 in the speed and performance? [duplicate]Base-2 和 Base-10 在速度和性能上有什么区别? [复制]
【发布时间】:2017-11-18 06:04:36
【问题描述】:

我知道base-2base-10的基本定义,但我想知道它们在性能速度方面有什么区别。

例如: 在C# 中,数据类型doubleBase-2,数据类型decimalBase-10 这样double 的计算速度非常快,decimal 的速度比双倍慢 10 倍。

我不明白为什么会这样,所以请任何人向我解释一下,并提前感谢:)

【问题讨论】:

  • 二进制 PC 中的二进制运算显然比其他基数快得多,就像人类以 10 为基数思考二进制算术一样。此外,通常没有十进制运算的指令,因此它们必须由更慢的软件模拟。可能重复:Decimal vs Double Speed
  • 我已经足够大,可以记住二进制浮点计算是在软件而不是高度优化的硬件中完成的日子了>

标签: c# double decimal computer-science


【解决方案1】:

性能差异的原因不是由于数字基数的差异,而是由于执行计算时硬件辅助的可用性。

double in .NET is represented in the way that followsIEEE-754 standard,这意味着有很多硬件辅助可用于在大多数平台上执行double 计算。

与二进制表示不同,十进制表示是最近才出现的(标准不到十年),所以availability of hardware assistance is still rather limited。这在未来可能会改变,但目前这意味着decimal 中的计算需要更多的 CPU 周期来执行。

【讨论】:

  • 由于其二进制格式和其他限制,IEEE-754 可以在 64 位数据包中支持非常广泛的有用精度。这使得将其算术作为寄存器到寄存器而不是内存到内存来进行是切实可行的。 Decimal 本质上不太紧凑,为了充分发挥其优势,您需要更大的变量大小,从而使寄存器的可行性大大降低。
猜你喜欢
  • 1970-01-01
  • 2019-03-06
  • 1970-01-01
  • 2017-12-25
  • 2010-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-30
相关资源
最近更新 更多