面试题答案
一键面试1. 使用 [MethodImpl(MethodImplOptions.AggressiveInlining)]
特性
- 原理:此特性提示编译器尽可能将标记的方法内联到调用处。内联能消除方法调用的开销,如栈帧的创建与销毁、参数传递等。当方法代码量少且被频繁调用时,内联可以使程序执行路径更直接,减少指令跳转,从而提升性能。例如,一个简单的获取两个数较大值的方法
int Max(int a, int b) { return a > b ? a : b; }
,如果频繁调用,内联后可避免方法调用开销。
2. 使用局部变量优化
- 原理:在循环等场景下,将频繁访问的成员变量或属性值缓存为局部变量。编译器对局部变量的访问优化更好,成员变量或属性访问可能涉及更多的间接寻址或额外逻辑(如属性的
get
访问器逻辑)。例如,在一个循环中访问List<int>
的Count
属性,将其赋值给局部变量int count = myList.Count;
后在循环中使用局部变量count
,可减少每次访问Count
属性的开销,提升性能。