通过内联代码调用方法的相对性能成本是多少?
答案 0 :(得分:20)
这取决于很多事情
非常,非常不太可能成为你的瓶颈。与往常一样,首先编写最易读的代码,然后对其进行基准测试,看它是否表现得足够好。如果没有,请使用分析器查找可能值得进行微优化的热点。
答案 1 :(得分:7)
与方法调用相关联cost
;
需要将参数压入堆栈或存储在寄存器中,需要执行方法prolog和epilog等等。 In-lining.
但是,JIT
使用了一些启发式方法来决定方法是否应该是内联的。以下因素影响JIT,而非影响In-line方法。
答案 2 :(得分:3)
与C ++相同。基本上是呼叫和返回,加上设置参数。但是请注意,JIT可以内联方法调用 - 因此在特定的上下文中可能没有您想象的那么昂贵。
答案 3 :(得分:1)
微不足道。 .net中的每次调用,至少对于C#来说都是虚拟调用,即使方法没有标记为虚拟,也要考虑它。
答案 4 :(得分:1)
与使代码易于阅读且意图清晰相比,性能成本无关紧要,无关紧要。