Cache Coherency: Packed vs Padded Thread Counters

Question 2 / 17 Correct so far: 0 (0 answered)

Snippet A

Packed Counters

struct Counters {
    std::atomic<long long> a{0};
    std::atomic<long long> b{0};
};

c.fetch_add(1, std::memory_order_relaxed);
Snippet B

Padded Counters

struct alignas(kCacheLineBytes) PaddedCounter {
    std::atomic<long long> value{0};
};
struct Counters {
    PaddedCounter a;
    PaddedCounter b;
};

c.fetch_add(1, std::memory_order_relaxed);
Shared test data (shared-setup)
static constexpr std::size_t kCacheLineBytes = 64;

Which snippet is faster?

Select the correct answer(s)