> > It generates some slightly smaller code. > if (bbr->lt_rtt_cnt < bbr_lt_intvl_min_rtts) > - 3e7: 0f b6 c0 movzbl %al,%eax > - 3ea: 83 f8 03 cmp $0x3,%eax > - 3ed: 0f 86 d4 00 00 00 jbe 4c7 <bbr_lt_bw_sampling.isra.6+0x157> > + 3e7: 3c 03 cmp $0x3,%al > + 3e9: 0f 86 d1 00 00 00 jbe 4c0 <bbr_lt_bw_sampling.isra.6+0x150> > > And different code for abs > /* Is new bw close to the lt_bw from the previous interval? */ > diff = abs(bw - bbr->lt_bw); > - 47a: 44 89 e2 mov %r12d,%edx > - 47d: 29 c2 sub %eax,%edx > - 47f: 89 d1 mov %edx,%ecx > - 481: 89 d3 mov %edx,%ebx > + 475: 44 89 e3 mov %r12d,%ebx > + 478: 29 c3 sub %eax,%ebx > + 47a: 89 da mov %ebx,%edx > + 47c: c1 fa 1f sar $0x1f,%edx > + 47f: 31 d3 xor %edx,%ebx > + 481: 29 d3 sub %edx,%ebx > > The biggest change is getting rid of the always true conditional. > ... > > Overall, it really makes little difference. Actual file sizes come out the > same. > The idea is more to document what is variable > and what is immutable in the algorithm.
SGTM, thanks Stephen !