Constexpr对编译优化非常有用.例如...
strlen(char*)
Run Code Online (Sandbox Code Playgroud)
可以使用....预编译
constexpr inline size_t strlen_constexpr(char* baseChar) {
return (
( baseChar[0] == 0 )
?(// if {
0
)// }
:(// else {
strlen_constexpr( baseChar+1 ) + 1
)// }
);
}
Run Code Online (Sandbox Code Playgroud)
这在优化时给它的运行时成本为"0"但是在运行时速度超过10 + x
// Test results ran on a 2010 macbook air
--------- strlen ---------
Time took for 100,000 runs:1054us.
Avg Time took for 1 run: 0.01054us.
--------- strlen_constexpr ---------
Time took for 100,000 runs:19098us.
Avg Time took for 1 run: 0.19098us.
Run Code Online (Sandbox Code Playgroud)
是否有任何现有的宏/模板黑客可以使用单个统一功能.即.
constexpr …Run Code Online (Sandbox Code Playgroud)