【问题标题】:Pre-build in Visual Studio 2010Visual Studio 2010 中的预构建
【发布时间】:2012-03-11 04:21:58
【问题描述】:

是否有可能在 Pre-build 事件中运行 C# 函数并将函数调用替换为常量值?

例如:

class A{
    A(){
        var aVar = B.Func1("a");
    }
}
class B{
    static String Func1(String str){
        //Do some things
        return str;
    }
}

预构建事件之后:

class A{
    A(){
        var aVar = "A";
    }
}
class B{
    public static String Func1(String str){
        //Do some things
        return str;
    }
}

【问题讨论】:

    标签: c# visual-studio visual-studio-2010 pre-build-event


    【解决方案1】:

    这与“预构建事件”无关。这是编译器在编译期间可能会应用也可能不会应用的优化。

    以 .NET Framework 为目标时,您增加了一层额外的优化复杂性。许多可能的优化不是在您最初将代码编译为 IL 时由 C# 编译器执行,而是由 JIT 编译器在您的代码执行之前执行(当 IL 被编译为本机代码时)。

    是的,JIT 编译器肯定会尽可能地应用诸如内联函数调用等微不足道的优化。对于任何优化器来说,这都是唾手可得的成果。 (虽然,在某些情况下,内联函数会使事情变得变慢,而优化器通常足够聪明,可以识别这一点。您应该始终信任优化器,而不是试图强迫它去做认为有道理。它通常比你聪明。)

    您的重点应该是编写清晰易读/易于维护的代码。在您对其进行分析并确定它太慢之前,不要担心如何优化它。

    【讨论】:

      猜你喜欢
      • 2012-10-28
      • 2011-08-13
      • 2012-08-12
      • 1970-01-01
      • 2011-04-08
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多