最近修改了同事写的一块算法处理代码,有一个地方看得很不舒服,如下
1 | if (likely(offset)) { |
本意是想着如果offset不为0的话,则赋值为0。 代码逻辑没有问题, 但是这个判断实在是多此一举。 既然用了likely,那么代码就是表示大部分情况offset是非0的,让编译器在编译的时候,把赋值指令紧跟在判断语句之后, 条件不成立时才作跳转。
1 | offset = 0; |
既然大部分情况offset不为0, 那就是这个逻辑大部分情况要执行2条语句,干脆直接赋值算了,这样所有情况都执行一条语句。
一条语句明显执行的更快。// 大概差1-2s的样子 500w次循环
顺带把原先代码中的tab全部替换为空格, 代码进行对齐,顿时清爽了许多。
这就是代码洁癖吧,我觉得挺好。
行动,才不会被动!
欢迎关注个人公众号 微信 -> 搜索 -> fishmwei,沟通交流。