【问题标题】:Is Int16 equality test faster than Int32? [duplicate]Int16 相等性测试是否比 Int32 更快? [复制]
【发布时间】:2010-08-10 20:06:40
【问题描述】:

可能重复:
.NET Integer vs Int16?

对于紧密循环中的大量测试,哪个更快?

static bool IsEqual(Int16 a, Int16 b)
{
   return a==b;
}
static bool IsEqual(Int32 a, Int32 b)
{
   return a==b;
}
static bool IsEqual(Int64 a, Int64 b)
{
   return a==b;
}

还是没有区别?

【问题讨论】:

标签: c# performance


【解决方案1】:

最好的办法是对其进行基准测试并亲自查看。

通常,在 32 位架构上,应该没有区别,或者 32 应该更快(原生字长通常是最快的,即使支持更小的整数)。同上 64/64。

【讨论】:

    【解决方案2】:

    理论上 int16 会比 int32 慢,因为它会在比较之前被强制转换。

    实际上,这只是一个很小的差异,很可能会在很大程度上被优化掉。因此,如果某些东西自然是 int16,那么不要仅仅为了这个理论上的速度优势而使用 int32。但是,如果它只是“自然”积分,则使用 int32 而不是 int16,因为 int32 是 .NET 中的“正常”整数大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 2016-10-26
      • 2016-02-28
      • 2021-09-24
      • 1970-01-01
      相关资源
      最近更新 更多