如何根据可用的CPU功能更改已使用的类?
例如,在客户端支持的SIMD更改已使用的Vector4
- 类:
bool has_sse = get_cpuid_info( "sse" );
if( has_sse ) {
// use Vector4SIMD only in the entire app
} else {
// fallback to a plain Vector4-class
}
我可以想到一些方法(编辑:添加建议):
现在的软件是如何完成这种或类似行为的?
答案 0 :(得分:0)
它可能是特定于编译器的。最近的GCC提供了__builtin_cpu_supports
等特定x86 builtins等。另请参阅ifunc
function attribute
当然,正如Mark Ransom所述,您可以使用虚拟方法。但是,对于非常简短的快速小函数来说,这可能是不值得的(你希望它们被内联)。