【发布时间】:2018-07-06 13:40:41
【问题描述】:
我正在尝试用其他工具替换 switch/case 结构做同样的事情但性能更好(更少的执行时间......),我想到了#ifdef 方法,但我不知道如何在这种情况下使用它:
float k_function(float *x,float *y,struct svm_model model)
{
int i;
float sum=0.0;
switch(model.model_kernel_type)
{
case LINEAR :
return result1;
case POLY :
return result2;
case RBF :
return result3;
case SIGMOID :
return result4;
default :
return 0;
}
}
PS:
typedef enum kernel_type {LINEAR, POLY, RBF, SIGMOID};
【问题讨论】:
-
在尝试 nanoptimizations 之前,您最好了解编译器和预处理器之间的区别以及各自的功能。
-
除非
model.model_kernel_type是在编译时定义的常量,否则您将无法使用预处理器条件。看起来不像。 -
您确定需要更好的性能吗?如果是这样,您确定更改这段代码会给您带来所需的性能提升吗? IE。你测量过这个吗?
-
您是否真正分析过您的代码的性能并确定这个
switch语句实际上是一个性能问题?
标签: c switch-statement conditional-compilation