Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ .NET4,C++;,如果…else和switch()对性能有何影响_C++_.net_Performance_Algorithm - Fatal编程技术网

C++ .NET4,C++;,如果…else和switch()对性能有何影响

C++ .NET4,C++;,如果…else和switch()对性能有何影响,c++,.net,performance,algorithm,C++,.net,Performance,Algorithm,现在在我的应用程序中,我使用的是这种结构 if (e->UserState->Equals(1)) {} //stuff 1 else if (e->UserState->Equals(2)) {} //stuff 2 ... // e - EventArgs of .NET 4 WebClient class 我应该更好地定义吗 int n = (int)e->UserState; 并使用开关() 它会对性能产生某种影响吗?(大约15种e->UserState

现在在我的应用程序中,我使用的是这种结构

if (e->UserState->Equals(1)) {} //stuff 1
else if (e->UserState->Equals(2)) {} //stuff 2
... // e - EventArgs of .NET 4 WebClient class
我应该更好地定义吗

int n = (int)e->UserState;
并使用开关()

它会对性能产生某种影响吗?(大约15种e->UserState变体)

(大约15种e->UserState变体)

我将以
switch
的形式编写它,纯粹是为了可读性!至于性能,您可以通过分析进行检查,但我怀疑是否存在统计上的显著差异

(大约15种e->UserState变体)


我将以
switch
的形式编写它,纯粹是为了可读性!至于性能,您可以通过评测进行检查,但我怀疑差异是否有统计学意义。

性能不是这里的关键因素(因为它是可以忽略的),而是可读性。因此,请使用
开关
或甚至一种方法:

public static void Stuff(UserState state)
{
    // do your stuff here ...
}
现在您可以使用它(假设
UserState
是一个现有的枚举):


性能不是这里的关键因素(因为它是可以忽略的),而是可读性。因此,请使用
开关
或甚至一种方法:

public static void Stuff(UserState state)
{
    // do your stuff here ...
}
现在您可以使用它(假设
UserState
是一个现有的枚举):


开关大小写会更快(在本例中),因为编译器可以做很多技巧使其更快,例如使用值作为该表索引的跳转表或二进制搜索。

请注意,如果“if”中的条件仅包含变量和常量,编译器可能会执行相同的操作,但如果您在条件中调用某些函数/方法,编译器必须按顺序执行每个检查,以保持此函数中可能产生的副作用。

切换情况会更快(在这种情况下)因为编译器可以做很多技巧来提高速度,比如使用值作为表索引的跳转表或二进制搜索。
请注意,如果“if”中的条件仅包含变量和常量,编译器可能会执行相同的操作,但如果您在条件中调用某些函数/方法,编译器必须按顺序执行每个检查,以保留此函数中可能产生的副作用

UserState state = (UserState)(int)e;
Stuff(state);