整数声明汇编差异

时间:2015-12-30 22:36:11

标签: c# assembly optimization .net-assembly

假设您有以下代码:

static void Send(byte[] buffer, int offset, int count)
{
    while (count > 0)
    {
        int size = sock.Send(buffer, offset, count);

        if (size == 0) throw new EndOfStreamException();

        offset += size;
        count -= size;
    }
}

VS

static void Send(byte[] buffer, int offset, int count)
{
    int size;

    while (count > 0)
    {
        size = sock.Send(buffer, offset, count);

        if (size == 0) throw new EndOfStreamException();

        offset += size;
        count -= size;
    }
}

我的老师告诉我,第二个会更有效率,但这是真的吗?

我做了一些测试并比较了汇编代码,它是平等的。

但总会如此吗?

  • 如果使用引用类型而不是原始类型,该怎么办? (假设你没有分配)
  • 使用多个变量怎么样?
  • 这两种可能性之间是否存在差异?

提前感谢您的任何答案,如果之前有人问过我,我会道歉,但我真的不知道怎么称呼它。

1 个答案:

答案 0 :(得分:1)

取决于编译器优化 - 但由于它是相同的范围(函数) - 实现(通常)是相同的。

只要您不在该行中实例化任何新内容,它就是函数范围内的局部变量。