Messages in this thread | | | From | David Laight <> | Subject | RE: [RFC PATCH v2 1/4] tools/nolibc: x86-64: Use `rep movsb` for `memcpy()` and `memmove()` | Date | Sun, 3 Sep 2023 20:35:06 +0000 |
| |
From: Ammar Faizi > Sent: 02 September 2023 13:37 > On 2023/09/02 午後7:29, Alviro Iskandar Setiawan wrote: > > On Sat, Sep 2, 2023 at 1:38 PM Ammar Faizi wrote: > >> Ok, I'll do that. > > > > Another micro-optimization. Since the likely case is the forward copy, > > make it the case that doesn't take the jump. > > > > Pseudo C: > > if (unlikely(dst - src < n)) > > backward_copy(); > > else > > forward_copy(); > > Point taken.
I believe it makes almost no difference. I'm sure I read that modern (Intel at least) cpu never do static branch prediction. So 'cold cache' there is 50% chance of the branch being taken. Nothing the compiler can do will affect it. OTOH having if (likely(dst - src >= n)) forwards(); else backwards(); (and in that order) probably makes the code a bit easier to read.
David
- Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)
| |