#define likely(x) __builtin_expect(!!(x), 1)
也就是说明x==1是“经常发生的”或是“很可能发生的”。
所以使用likely ,执行if后面语句的可能性大些,编译器将if{}是的内容编译到前面
使用unlikely ,执行else后面语句的可能性大些,编译器将else{}里的内容编译到前面。
以上操作是有利于cpu预取,提高预取指令的正确率,因而可提高效率。
#define likely(x) __builtin_expect(!!(x), 1)
也就是说明x==1是“经常发生的”或是“很可能发生的”。
所以使用likely ,执行if后面语句的可能性大些,编译器将if{}是的内容编译到前面
使用unlikely ,执行else后面语句的可能性大些,编译器将else{}里的内容编译到前面。
以上操作是有利于cpu预取,提高预取指令的正确率,因而可提高效率。