除了if外,不能使用布尔值。但是,这并不意味着在装配级别将有一个分支。
如果检查该方法的编译代码(顺便说一句,使用
return b ? 1 : 0;完全相同的指令进行编译),您将看到它不使用跳转:
0x0000000002672580: sub x18,%rsp0x0000000002672587: mov %rbp,0x10(%rsp) ;*synchronization entry0x000000000267258c: mov %edx,%eax0x000000000267258e: add x10,%rsp0x0000000002672592: pop %rbp0x0000000002672593: test %eax,-0x2542599(%rip) # 0x0000000000130000 ; {poll_return}0x00000000025b2599: retq
注意:这是在热点服务器7上-在不同的VM上可能会得到不同的结果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)