可能重复:
C# 编译器优化 - 未使用的方法
JIT 编译器在程序启动后运行并将代码(通常是字节码或某种 VM 指令)即时(或称为即时)编译成通常更快的形式,通常是主机 CPU 的本机指令系统。JIT 可以访问动态运行时信息,而标准编译器则不能,并且可以进行更好的优化,例如经常使用的内联函数。
这与在程序首次运行之前将所有代码编译为机器语言的传统编译器形成对比。但我的问题是 JIT 编译器是否消除了空方法?谁能给一个简洁易懂的描述?
可能重复:
C# 编译器优化 - 未使用的方法
JIT 编译器在程序启动后运行并将代码(通常是字节码或某种 VM 指令)即时(或称为即时)编译成通常更快的形式,通常是主机 CPU 的本机指令系统。JIT 可以访问动态运行时信息,而标准编译器则不能,并且可以进行更好的优化,例如经常使用的内联函数。
这与在程序首次运行之前将所有代码编译为机器语言的传统编译器形成对比。但我的问题是 JIT 编译器是否消除了空方法?谁能给一个简洁易懂的描述?
不是的,我只是通过在我当前的项目中添加一个未使用的函数并在 exe 中添加 dotPeeking 来测试它。它还在那里。
即使在发布模式下,您也可以关闭优化。所以我认为你的问题是:在优化模式下是否删除了私有方法。然后答案是否定的。
我认为它在这里被广泛讨论: C#编译器优化 - 未使用的方法
(PS:当我复制/粘贴你的标题时,这是谷歌的第一次点击)
上一个问题可能会回答您的问题。似乎它没有被编译但是那些未使用的方法永远不会被调用。这似乎不会影响内存占用,因为 JIT 会根据需要将这些部分带入内存。