我认为我正在观察.NET JIT编译器没有内联或优化对没有副作用的空静态方法的调用,考虑到一些直言不讳的在线资源,这有点令人惊讶.
我的环境是x64,Windows 8.1,.NET Framework 4.5上的Visual Studio 2013.
鉴于这个简单的测试程序(https://ideone.com/2BRCpC)
class Program
{
static void EmptyBody()
{
}
static void Main()
{
EmptyBody();
}
}
Run Code Online (Sandbox Code Playgroud)
发布版本与上述程序的最优化产生以下MSIL为Main和EmptyBody:
.method private hidebysig static void Main() cil managed
{
.entrypoint
// Code size 6 (0x6)
.maxstack 8
IL_0000: call void Program::EmptyBody()
IL_0005: ret
} // end of method Program::Main
.method private hidebysig static void EmptyBody() cil managed
{
// Code size 1 (0x1)
.maxstack 8
IL_0000: ret
} // …Run Code Online (Sandbox Code Playgroud)