On Wed, 11 Sep 2013 19:18:57 -0400 (EDT) Mikulas Patocka <mpatocka@xxxxxxxxxx> wrote: > Hi > > I think you should revert the patch > 4c0ca26bd260dddf3b9781758cb5e2df3f74d4a3 that did this change: > > for (f = 1; f < geo->far_copies; f++) { > d += geo->near_copies; > - if (d >= geo->raid_disks) > - d -= geo->raid_disks; > + d %= geo->raid_disks; > s += geo->stride; > r10bio->devs[slot].devnum = d; > r10bio->devs[slot].addr = s; > > > On most processors, the divide and modulo operations are slower than a > possibly misprediteced branch or conditional move instruction. > > So, replacing a condition with modulo doesn't make sense. > > A benchmark on AMD K10 shows that mispredicted branch is 8.7 times faster > than a divide operation: > > for (i = 0; i < 10000000; i++) { > q++; > if (q >= 8) > q -= 8; > } > - 11607us (it compiles to cmov and runs at a rate of 3 ticks per > iteration) > > for (i = 0; i < 10000000; i++) { > q++; > q %= max; > } > - 101241us (26 ticks per iteration) > > > Mikulas I can't seem to get excited about this sort of micro optimisation. If someone were to send me a nice patch with a good description and a couple of acked-by:s from relevant people I would probably apply it. But otherwise I just wouldn't care. Thanks, NeilBrown
Attachment:
signature.asc
Description: PGP signature