当前位置: 首页 > 知识库问答 >
问题:

如何在C#中强制内联函数?[副本]

苏彭薄
2023-03-14

在C++中,我们可以强制函数内联。

这在C#中也是可能的吗?有时,当方法很小时,它会自动内联。但是在C#/.NET中强制内联函数是否可能?

共有1个答案

罗梓
2023-03-14

算是吧。这不是你直接控制的。它从不内联在IL中--它只是由JIT完成的。

可以使用MethodImplAttribute显式强制不内联方法

[MethodImpl(MethodImplOptions.NoInlining)]
public void Foo() { ... }

从.NET4.5开始,您还可以对“请求”内联进行排序:

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void Foo() { ... }
 类似资料:
  • 我有一个函数定义为 (是映射到英特尔MIC体系结构上SIMD寄存器的本机数据类型) 由于这个函数相当短并且经常被调用,我希望它在每次调用时都内联。但是英特尔的编译器似乎不愿意内联这个函数,即使在我使用 - 和 选项之后也是如此。它报告说“Forceinline不被授予呼叫......”编译时。由于我必须使用一些编译器特定的功能,例如类型,英特尔编译器是我唯一的选择。 更多信息: 文件结构非常简单。

  • 函数是一个可以重复使用的代码块,CPU 会一条一条地挨着执行其中的代码。CPU 在执行主调函数代码时如果遇到了被调函数,主调函数就会暂停,CPU 转而执行被调函数的代码;被调函数执行完毕后再返回到主调函数,主调函数根据刚才的状态继续往下执行。 一个 C/ C++ 程序的执行过程可以认为是多个函数之间的相互调用过程,它们形成了一个或简单或复杂的调用链条,这个链条的起点是 main(),终点也是 ma

  • C++ 类 & 对象 C++ 内联函数是通常与类一起使用。如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方。 对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编译器需要重新更换一次所有的代码,否则将会继续使用旧的函数。 如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字 inline,在调用函数之前需要对函数进行定义。如果已定义的函数多

  • 您好,我正在尝试制作一个数组,其结尾如下: 但最后却是这样说的 这是图像:数组 我仍然不明白Java,但我需要完成它作为家庭作业。

  • 问题内容: 我想对Python中的函数进行深拷贝。该 副本 模块是没有帮助的,根据文件,其中说: 该模块不复制诸如模块,方法,堆栈跟踪,堆栈框架,文件,套接字,窗口,数组或任何类似类型的类型。它通过不变地返回原始对象来“复制”函数和类(浅层和深层)。这与泡菜模块处理这些食物的方式兼容。 我的目标是使两个函数具有相同的实现,但具有不同的文档字符串。 那怎么办呢? 问题答案: FunctionType

  • 我有以下代码: 人口。txt文件 情节结果 如何强制x轴上的年份标签是从1900到1920的整数(相应地保存在“年份”数组中),以及为什么它们首先显示为浮点数? 我试图在axes[0]的情节中强行处理这件事,但这似乎只是引起了其他问题。我错过了什么? 理想情况下,我也希望不必将1900 - 1920硬编码为年份跨度,因为数据集可能会增长。我如何确保np.loadtxt()从一开始就将数据保存为整数