当前位置:  开发笔记 > 编程语言 > 正文

内联函数

如何解决《内联函数》经验,为你挑选了1个好方法。

内联是什么?

它是干什么用的?

你能用C#内联一些东西吗?



1> cgreeno..:

这是什么

在C和C++方面,您使用inline关键字告诉编译器调用例程而不会将参数压入堆栈.而函数将其机器代码插入到调用它的函数中.在某些情况下,这可以显着提高性能.

危险

随着内联函数的大小增加,使用"内联"的速度优势显着降低.过度使用实际上会导致程序运行速度变慢.内联一个非常小的访问器函数通常会减少代码大小,而内联一个非常大的函数可以大大增加代码大小.

在C#中内联

在C#内联发生在JIT级别,JIT编译器在其中做出决定.目前C#中没有可以明确执行此操作的机制.如果您想知道JIT编译器正在做什么,那么您可以System.Reflection.MethodBase.GetCurrentMethod().Name在运行时调用:如果方法是内联的,它将返回调用者的名称.

在C#中,您不能强制方法内联,但您可以强制方法不要.如果您确实需要访问特定的callstack,并且需要删除内联,则可以使用:MethodImplAttributewith MethodImplOptions.NoInlining.此外,如果一个方法被声明为虚拟,那么它也不会被JIT内联.这背后的原因是呼叫的最终目标是未知的.

更多关于内联


更确切地说,你不"告诉编译器",你"向编译器提出建议,它可能会或可能不会注意到它."
推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有