C#:委托和方法调用之间的性能
对不起,我的英语不好 我有两种绘图方法,比如“void Draw1();”和“void Draw2();”。 如果用户选中“调用Draw1函数”,我的应用程序应该始终调用Draw1。因此,如果用户没有选中“调用Draw1函数”,我的应用程序应该总是调用Draw2 有两种方法可以做到这一点:C#:委托和方法调用之间的性能,c#,performance,methods,delegates,C#,Performance,Methods,Delegates,对不起,我的英语不好 我有两种绘图方法,比如“void Draw1();”和“void Draw2();”。 如果用户选中“调用Draw1函数”,我的应用程序应该始终调用Draw1。因此,如果用户没有选中“调用Draw1函数”,我的应用程序应该总是调用Draw2 有两种方法可以做到这一点: 使用代理功能: 委托无效DrawFct(); DrawFct Draw; ... Draw=(调用\u Draw1.选中)?新图纸FCT(图纸1):新图纸FCT(图纸2); ... Draw(); ...
委托无效DrawFct();
DrawFct Draw;
...
Draw=(调用\u Draw1.选中)?新图纸FCT(图纸1):新图纸FCT(图纸2);
...
Draw();
...
void Draw1(){…调用\u 1…}
void Draw2(){…调用_2…}
bool useDraw1=调用\u Draw1.Checked;
...
作废提款()
{
如果(useDraw1){…调用\u 1…}
否则{…调用_2…}
}
000007FE8FF3A393移动rax,qword ptr[rbp+0FA0h]
000007FE8FF3A39A移动速率,qword ptr[rax+1B8h]
000007FE8FF3A3A1 mov qword ptr[rbp+0F58h],rax
000007FE8FF3A3A8 mov rcx,qword ptr[rbp+0F58h]
000007FE8FF3A3AF mov rcx,qword ptr[rcx+8]
000007FE8FF3A3B3移动rax,qword ptr[rbp+0F58h]
000007FE8FF3A3BA呼叫qword ptr[rax+18h]
000007FE8FF3A3BD nop
000007FE8FF3A386 mov rcx,qword ptr[rbp+0FA0h]
000007FE8FF3A38D呼叫000007FE8FD2E0
000007FE8FF3A392无
谢谢。第二个比第一个快。查看
调用
指令。在第二个示例中,它只调用常量地址,在第一个示例中,必须首先计算地址。很明显,更多的指令意味着更慢的代码,但我认为可以安全地忽略性能影响