首页 / 知识
关于性能:在.NET中,是否会优化空方法调用?
2023-04-12 06:06:00

In .NET, will empty method calls be optimized out?给出一个空的方法主体,JIT将优化调用(我知道C#编译器不会)。我将如何寻找答案?我应该使用什么工具,在哪里寻找? 因为我确定会被问到,所以空方法的原因是预处理器指令。 @Chris: @Jon: 此章对JIT优化进行了很好的处理,在页面上搜索"方法为空",大约在文章的中间- http://www.codeproject.com/KB/dotnet/JITOptimizations.aspx 显然,空方法确实可以通过内联什么没有代码的方法得到优化。 @Chris:我确实意识到这些方法仍将是二进制文件的一部分,并且这些都是JIT优化:-)。在半相关的说明中,Scott Hanselman有一篇非常有趣的文章,涉及内联在Release build调用堆栈中: http://www.hanselman.com/blog/ReleaseISNOTDebug64bitOptimizationsAndCMethodInliningInReleaseBuildCallStacks.aspx 我猜你的代码是这样的:
这不会得到优化,但是:
第一个空方法是部分方法,C#3编译器将对其进行优化。 顺便说一句:这基本上是部分方法的用途。微软在其Linq设计器中添加了代码生成器,这些代码生成器需要调用默认情况下不执行任何操作的方法。 您可以使用部分方法,而不是强迫您重载该方法。 这样,如果不使用局部函数,则将完全优化,并且不会损失任何性能,而不是增加额外的空方法调用的开销。 否,永远不会优化空方法。以下是几个原因:
编辑:是的,通过查看该(优秀)代码项目doc,JITer将消除对空方法的调用。但是由于我列出的原因,方法本身仍将被编译为二进制文件的一部分。 所有条件都相同,是的,应该对其进行优化。 JIT内联函数在适当的地方,并且没有什么比空函数更合适的了:) 如果您真的想确定,请更改您的空方法以引发异常并打印出其中包含的堆栈跟踪。 |
最新内容
相关内容
python中获取路径的三种方法
python中获取路径的三种方法,工作,代码,情况,培训,下来,路径,文件,也就是,桌面,目录,python中获取路径总结下来分为三种情况:1、获取工作目录pythonpip怎么调用
pythonpip怎么调用,培训,工具,标准,管理,替代品,模块,以上,功能,更多,内容,pip是一个安装和管理Python包的工具,python安装包的工具有easy_inspython有map方法吗
python有map方法吗,培训,位置,数据,函数,列表,序列,参数,元素,方法,使用方法,python中的map:map()会根据提供的函数对指定序列做映射。第一个python函数嵌套时怎么调用
python函数嵌套时怎么调用,培训,函数,周期,变量,嵌套,作用,定义,里面,上层,也就是说,python允许创建嵌套函数。也就是说我们可以在函数里面定python库怎么调用
python库怎么调用,培训,模块,代码,成员,别名,前缀,程序,语句,语法,上面,python使用import导入模块的语法,,主要有以下两种:import模块名1[as别名python代码中优化提速的小技巧分享
python代码中优化提速的小技巧分享,代码,培训,python有哪些方法可以解压文件?
python有哪些方法可以解压文件?,工具,系统,工作,培训,文件,文件夹,方法,窗体,不同于,以下内容,在Python学习和日常使用中,很容易造成文件过大。python函数与方法的区别是什么
python函数与方法的区别是什么,培训,函数,方法,区别,对象,以上,方式,更多,内容,python中函数和方法的区别1、函数要手动传self,方法不用传selpython调用函数不带()
python调用函数不带(),培训,函数,情况,名称,代码,圆括号,定义,括号,自变量,参数,python调用函数:函数定义函数定义的简单规则:函数代码块以defpython如何调用类中的方法
python如何调用类中的方法,培训,入口,名字,文件,方法,参数,路径,函数,文件夹,下面,python调用类中的方法:调用同一个类中的方法首先类中的方法python字符串切片的方法是什么
python字符串切片的方法是什么,培训,字符串,索引,切片,开头,方括号,时候,方法,冒号,首尾,获取Python字符串中的某字符可以使用索引:lang=pythopython子类怎么调用父类方法
python子类怎么调用父类方法,培训,代码,初始化,方法,函数,示例,时调,定义,对象,以上,python中类的初始化方法是__init__(),因此父类子类的初始