如何优化switch语句
如何优化switch语句
编程的过程中难免会使用到switch语句,case如果少的情况下,效率和性能还可以,如果出项比较多的case的情况下,
还使用swtich,将会大大影响程序的性能。如何优化这样比较大的switch语句呢?有三种方法:
第一种方法就是根据频率来排列case的位置,对于频率较高的case放到前面,而不是按照
case的值得有序排列,例如:
switch (type) { case 1: break; case 2: break; … case 20: break; default: break; }
switch (type) { case 18: break; case 19: break; case 1: break; case 2: break; … case 20: break; default: break; }
switch (type) { case 1: break; case 2: break; … case 100: break; … case 200: break; default: break; }修改为:if (1< type && type <50) { switch (type) { case 1: This case is used most. And the frequency descends one bye one. break; case 2: break; … case 49: break; default: break; }; // This may be encapsulated as a function.} else if (51< m_pdutype && m_pdutype <99){ switch (type) { case 51: This case is used most. And the frequency descends one bye one. break; case 52: break; … case 99: break; default: break; }; // This may be encapsulated as a function.} else if (){ …}
int handleCase1(void);int handleCase2(void);int handleCase3(void);int handleCase4(void);typedef void (*handleCaseFunc)(void) ;handleCaseFunc g_apFuncArray[200]={ handleCase1, handleCase2, handleCase3, ... handleCase199};
switch (type) { case 1: break; case 2: break; … case 100: break; … case 200: break; default: break; }