Go Counter Benchmark
A benchmark to compare the performance of different counter implementations in Go.
Description:The classic counter is a simple integer, mostly increased by i++. This implementation works fine in the most cases, but it has some drawbacks. One of them is that it is not thread-safe. If you want to use it in a concurrent environment, you have to use a mutex or a channel to synchronize the access. A solution is to use atomics. There are different approaches to use atomics to make a counter thread-safe. This benchmark shows which implementation is the fastest, in which use-case.
Implementations
Green marks the fastest implementation, red marks the slowest
Comparison
This section compares the performance of Counter implementations with the
functions: get and increment
Different Run Count
Different CPU Core Count
Different Run Count Per Function
Some algorithms get slower or faster over time. Especially when they populate the same data struct.
get
increment
Different CPU Core Count Per Function
Some algorithms are influenced by the amount of cores a CPU has.
get
increment
Atomic Pointer Counter
The Atomic Pointer Counter uses an uint64 to store the counter value. It will then use atomic.AddUint64 to increase the counter value via a pointer.
| Function | ns/op | ops/sec | B/op | allocs/op | MB/s |
|---|---|---|---|---|---|
| get | 0.37 | 3053428651 | 0.0 | 0 | 0.0 |
| increment | 4.93 | 206253727 | 0.0 | 0 | 0.0 |
Comparison
- Atomic Pointer Counter
getis 12.42% slower than Atomic Uint Counterget. - Atomic Pointer Counter
getis 11.27% slower than Int Counterget. - Atomic Pointer Counter
getis 97.65% faster than Int Counter With Mutexget. - Atomic Pointer Counter
incrementis 1.53% faster than Atomic Uint Counterincrement. - Atomic Pointer Counter
incrementis 1406.08% slower than Int Counterincrement. - Atomic Pointer Counter
incrementis 73.18% faster than Int Counter With Mutexincrement.
type AtomicPointerCounter struct {
count uint64
}
func (c *AtomicPointerCounter) increment() {
atomic.AddUint64(&c.count, 1)
}
func (c *AtomicPointerCounter) get() uint64 {
return atomic.LoadUint64(&c.count)
} func BenchmarkAtomicPointerCounter_increment(b *testing.B) {
var counter AtomicPointerCounter
b.ResetTimer()
for i := 0; i < b.N; i++ {
counter.increment()
}
}
func BenchmarkAtomicPointerCounter_get(b *testing.B) {
var counter AtomicPointerCounter
b.ResetTimer()
for i := 0; i < b.N; i++ {
counter.get()
}
}Atomic Pointer Counter get
| ns/op | ops/sec | B/op | allocs/op | MB/s |
|---|---|---|---|---|
| 0.37 | 3053428651 | 0.0 | 0 | 0.0 |
By Run Count
By CPU Core Count
Atomic Pointer Counter increment
| ns/op | ops/sec | B/op | allocs/op | MB/s |
|---|---|---|---|---|
| 4.93 | 206253727 | 0.0 | 0 | 0.0 |
By Run Count
By CPU Core Count
Atomic Uint Counter
This implementation is very similar to the Atomic Pointer Counter, but it uses an atomic.Uint64 instead of a uint64. That way, the counter value can be incremented directly, by calling its Add method.
| Function | ns/op | ops/sec | B/op | allocs/op | MB/s |
|---|---|---|---|---|---|
| get | 0.33 | 3112008073 | 0.0 | 0 | 0.0 |
| increment | 5.00 | 204753173 | 0.0 | 0 | 0.0 |
Comparison
- Atomic Uint Counter
getis 11.05% faster than Atomic Pointer Counterget. - Atomic Uint Counter
getis 1.02% faster than Int Counterget. - Atomic Uint Counter
getis 97.91% faster than Int Counter With Mutexget. - Atomic Uint Counter
incrementis 1.56% slower than Atomic Pointer Counterincrement. - Atomic Uint Counter
incrementis 1429.55% slower than Int Counterincrement. - Atomic Uint Counter
incrementis 72.76% faster than Int Counter With Mutexincrement.
type AtomicUintCounter struct {
count atomic.Uint64
}
func (c *AtomicUintCounter) increment() {
c.count.Add(1)
}
func (c *AtomicUintCounter) get() uint64 {
return c.count.Load()
} func BenchmarkAtomicUintCounter_increment(b *testing.B) {
var counter AtomicUintCounter
b.ResetTimer()
for i := 0; i < b.N; i++ {
counter.increment()
}
}
func BenchmarkAtomicUintCounter_get(b *testing.B) {
var counter AtomicUintCounter
b.ResetTimer()
for i := 0; i < b.N; i++ {
counter.get()
}
}Atomic Uint Counter get
| ns/op | ops/sec | B/op | allocs/op | MB/s |
|---|---|---|---|---|
| 0.33 | 3112008073 | 0.0 | 0 | 0.0 |
By Run Count
By CPU Core Count
Atomic Uint Counter increment
| ns/op | ops/sec | B/op | allocs/op | MB/s |
|---|---|---|---|---|
| 5.00 | 204753173 | 0.0 | 0 | 0.0 |
By Run Count
By CPU Core Count
Int Counter
This implementation uses a simple int to store the counter value. It will then use i++ to increase the counter value. This implementation is not thread-safe.
| Function | ns/op | ops/sec | B/op | allocs/op | MB/s |
|---|---|---|---|---|---|
| get | 0.33 | 3083655343 | 0.0 | 0 | 0.0 |
| increment | 0.33 | 3116415567 | 0.0 | 0 | 0.0 |
Comparison
- Int Counter
getis 10.13% faster than Atomic Pointer Counterget. - Int Counter
getis 1.03% slower than Atomic Uint Counterget. - Int Counter
getis 97.89% faster than Int Counter With Mutexget. - Int Counter
incrementis 93.36% faster than Atomic Pointer Counterincrement. - Int Counter
incrementis 93.46% faster than Atomic Uint Counterincrement. - Int Counter
incrementis 98.22% faster than Int Counter With Mutexincrement.
type IntCounter struct {
count uint64
}
func (c IntCounter) increment() {
c.count++
}
func (c IntCounter) get() uint64 {
return c.count
} func BenchmarkIntCounter_increment(b *testing.B) {
var counter IntCounter
b.ResetTimer()
for i := 0; i < b.N; i++ {
counter.increment()
}
}
func BenchmarkIntCounter_get(b *testing.B) {
var counter IntCounter
b.ResetTimer()
for i := 0; i < b.N; i++ {
counter.get()
}
}Int Counter get
| ns/op | ops/sec | B/op | allocs/op | MB/s |
|---|---|---|---|---|
| 0.33 | 3083655343 | 0.0 | 0 | 0.0 |
By Run Count
By CPU Core Count
Int Counter increment
| ns/op | ops/sec | B/op | allocs/op | MB/s |
|---|---|---|---|---|
| 0.33 | 3116415567 | 0.0 | 0 | 0.0 |
By Run Count
By CPU Core Count
Int Counter With Mutex
This implementation uses a simple int to store the counter value. It will then use i++ to increase the counter value. This implementation is thread-safe, because it uses a mutex to synchronize the accesses.
| Function | ns/op | ops/sec | B/op | allocs/op | MB/s |
|---|---|---|---|---|---|
| get | 15.79 | 63498414 | 0.0 | 0 | 0.0 |
| increment | 18.37 | 60131143 | 0.0 | 0 | 0.0 |
Comparison
- Int Counter With Mutex
getis 4163.54% slower than Atomic Pointer Counterget. - Int Counter With Mutex
getis 4693.14% slower than Atomic Uint Counterget. - Int Counter With Mutex
getis 4644.10% slower than Int Counterget. - Int Counter With Mutex
incrementis 272.84% slower than Atomic Pointer Counterincrement. - Int Counter With Mutex
incrementis 267.12% slower than Atomic Uint Counterincrement. - Int Counter With Mutex
incrementis 5515.33% slower than Int Counterincrement.
type IntCounterWithMutex struct {
count uint64
mu sync.Mutex
}
func (c *IntCounterWithMutex) increment() {
c.mu.Lock()
defer c.mu.Unlock()
c.count++
}
func (c *IntCounterWithMutex) get() uint64 {
c.mu.Lock()
defer c.mu.Unlock()
return c.count
} func BenchmarkIntCounterWithMutex_increment(b *testing.B) {
var counter IntCounterWithMutex
b.ResetTimer()
for i := 0; i < b.N; i++ {
counter.increment()
}
}
func BenchmarkIntCounterWithMutex_get(b *testing.B) {
var counter IntCounterWithMutex
b.ResetTimer()
for i := 0; i < b.N; i++ {
counter.get()
}
}Int Counter With Mutex get
| ns/op | ops/sec | B/op | allocs/op | MB/s |
|---|---|---|---|---|
| 15.79 | 63498414 | 0.0 | 0 | 0.0 |
By Run Count
By CPU Core Count
Int Counter With Mutex increment
| ns/op | ops/sec | B/op | allocs/op | MB/s |
|---|---|---|---|---|
| 18.37 | 60131143 | 0.0 | 0 | 0.0 |
By Run Count
By CPU Core Count
Full Benchmark Code
type AtomicPointerCounter struct {
count uint64
}
func (c *AtomicPointerCounter) increment() {
atomic.AddUint64(&c.count, 1)
}
func (c *AtomicPointerCounter) get() uint64 {
return atomic.LoadUint64(&c.count)
}
func BenchmarkAtomicPointerCounter_increment(b *testing.B) {
var counter AtomicPointerCounter
b.ResetTimer()
for i := 0; i < b.N; i++ {
counter.increment()
}
}
func BenchmarkAtomicPointerCounter_get(b *testing.B) {
var counter AtomicPointerCounter
b.ResetTimer()
for i := 0; i < b.N; i++ {
counter.get()
}
}
type AtomicUintCounter struct {
count atomic.Uint64
}
func (c *AtomicUintCounter) increment() {
c.count.Add(1)
}
func (c *AtomicUintCounter) get() uint64 {
return c.count.Load()
}
func BenchmarkAtomicUintCounter_increment(b *testing.B) {
var counter AtomicUintCounter
b.ResetTimer()
for i := 0; i < b.N; i++ {
counter.increment()
}
}
func BenchmarkAtomicUintCounter_get(b *testing.B) {
var counter AtomicUintCounter
b.ResetTimer()
for i := 0; i < b.N; i++ {
counter.get()
}
}
type IntCounter struct {
count uint64
}
func (c IntCounter) increment() {
c.count++
}
func (c IntCounter) get() uint64 {
return c.count
}
func BenchmarkIntCounter_increment(b *testing.B) {
var counter IntCounter
b.ResetTimer()
for i := 0; i < b.N; i++ {
counter.increment()
}
}
func BenchmarkIntCounter_get(b *testing.B) {
var counter IntCounter
b.ResetTimer()
for i := 0; i < b.N; i++ {
counter.get()
}
}
type IntCounterWithMutex struct {
count uint64
mu sync.Mutex
}
func (c *IntCounterWithMutex) increment() {
c.mu.Lock()
defer c.mu.Unlock()
c.count++
}
func (c *IntCounterWithMutex) get() uint64 {
c.mu.Lock()
defer c.mu.Unlock()
return c.count
}
func BenchmarkIntCounterWithMutex_increment(b *testing.B) {
var counter IntCounterWithMutex
b.ResetTimer()
for i := 0; i < b.N; i++ {
counter.increment()
}
}
func BenchmarkIntCounterWithMutex_get(b *testing.B) {
var counter IntCounterWithMutex
b.ResetTimer()
for i := 0; i < b.N; i++ {
counter.get()
}
}Full Benchmark Output
| Implementation | Function | Runs | CPU Core Count | ns/op | ops/sec | B/op | allocs/op | MB/s |
|---|---|---|---|---|---|---|---|---|
| Atomic Pointer Counter | get | 1000 | 16 | 0.5 | 2000000000 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 2000 | 16 | 0.375 | 2666666666.6666665 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 3000 | 16 | 0.3533 | 2830455703.3682423 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 4000 | 16 | 0.3225 | 3100775193.7984495 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 5000 | 16 | 0.31 | 3225806451.612903 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 6000 | 16 | 0.3167 | 3157562361.856647 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 7000 | 16 | 0.3043 | 3286230693.394676 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 8000 | 16 | 0.2925 | 3418803418.803419 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 9000 | 16 | 0.2889 | 3461405330.564209 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 10000 | 16 | 0.295 | 3389830508.4745765 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 1000 | 1 | 4.75 | 210526315.78947368 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 2000 | 1 | 4.725 | 211640211.64021164 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 3000 | 1 | 4.717 | 211999152.003392 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 4000 | 1 | 4.718 | 211954217.88893598 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 5000 | 1 | 4.712 | 212224108.65874365 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 6000 | 1 | 4.712 | 212224108.65874365 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 7000 | 1 | 4.711 | 212269157.29144555 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 8000 | 1 | 4.71 | 212314225.05307856 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 9000 | 1 | 4.71 | 212314225.05307856 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 10000 | 1 | 4.709 | 212359311.9558293 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 1000 | 8 | 4.79 | 208768267.22338206 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 2000 | 8 | 4.75 | 210526315.78947368 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 3000 | 8 | 4.75 | 210526315.78947368 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 4000 | 8 | 4.737 | 211104074.30863416 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 5000 | 8 | 4.726 | 211595429.53872198 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 6000 | 8 | 4.742 | 210881484.60565162 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 7000 | 8 | 4.743 | 210837022.9812355 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 8000 | 8 | 5.056 | 197784810.12658226 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 9000 | 8 | 4.989 | 200440970.13429546 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 10000 | 8 | 4.745 | 210748155.9536354 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 1000 | 16 | 5.239 | 190876121.39721322 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 2000 | 16 | 4.75 | 210526315.78947368 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 3000 | 16 | 4.743 | 210837022.9812355 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 4000 | 16 | 4.73 | 211416490.4862579 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 5000 | 16 | 4.72 | 211864406.77966103 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 6000 | 16 | 4.747 | 210659363.8087213 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 7000 | 16 | 4.737 | 211104074.30863416 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 8000 | 16 | 4.731 | 211371803.0014796 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 9000 | 16 | 5.142 | 194476857.25398678 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 10000 | 16 | 4.716 | 212044105.17387617 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 1000 | 1 | 0.38 | 2631578947.368421 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 2000 | 1 | 0.325 | 3076923076.9230766 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 3000 | 1 | 0.3067 | 3260515161.3955007 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 4000 | 1 | 0.295 | 3389830508.4745765 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 5000 | 1 | 0.292 | 3424657534.2465754 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 6000 | 1 | 0.2867 | 3487966515.521451 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 7000 | 1 | 0.2857 | 3500175008.7504373 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 8000 | 1 | 0.2825 | 3539823008.849558 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 9000 | 1 | 0.2811 | 3557452863.749555 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 10000 | 1 | 0.281 | 3558718861.2099643 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 1000 | 4 | 0.45 | 2222222222.2222223 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 2000 | 4 | 0.395 | 2531645569.620253 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 3000 | 4 | 0.3267 | 3060912151.821243 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 4000 | 4 | 0.3225 | 3100775193.7984495 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 5000 | 4 | 0.32 | 3125000000 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 6000 | 4 | 0.3 | 3333333333.3333335 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 7000 | 4 | 0.2957 | 3381805884.3422384 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 8000 | 4 | 0.2925 | 3418803418.803419 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 9000 | 4 | 0.2889 | 3461405330.564209 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 10000 | 4 | 0.294 | 3401360544.217687 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 1000 | 2 | 0.47 | 2127659574.4680853 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 2000 | 2 | 0.36 | 2777777777.7777777 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 3000 | 2 | 0.3367 | 2970002970.00297 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 4000 | 2 | 0.3125 | 3200000000 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 5000 | 2 | 0.32 | 3125000000 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 6000 | 2 | 0.2983 | 3352329869.259135 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 7000 | 2 | 0.2929 | 3414134516.899966 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 8000 | 2 | 0.2925 | 3418803418.803419 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 9000 | 2 | 0.3656 | 2735229759.2997813 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 10000 | 2 | 0.289 | 3460207612.4567475 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 1000 | 8 | 0.45 | 2222222222.2222223 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 2000 | 8 | 0.405 | 2469135802.4691358 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 3000 | 8 | 0.33 | 3030303030.30303 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 4000 | 8 | 0.325 | 3076923076.9230766 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 5000 | 8 | 0.312 | 3205128205.1282053 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 6000 | 8 | 0.2983 | 3352329869.259135 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 7000 | 8 | 2.683 | 372717107.7152442 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 8000 | 8 | 0.2963 | 3374957813.027337 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 9000 | 8 | 0.2933 | 3409478349.8124785 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 10000 | 8 | 0.292 | 3424657534.2465754 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 1000 | 2 | 4.8 | 208333333.33333334 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 2000 | 2 | 4.775 | 209424083.7696335 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 3000 | 2 | 4.747 | 210659363.8087213 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 4000 | 2 | 4.742 | 210881484.60565162 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 5000 | 2 | 12.04 | 83056478.40531562 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 6000 | 2 | 5.805 | 172265288.5443583 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 7000 | 2 | 4.737 | 211104074.30863416 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 8000 | 2 | 5.185 | 192864030.85824496 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 9000 | 2 | 4.753 | 210393435.72480538 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 10000 | 2 | 4.721 | 211819529.76064393 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 1000 | 32 | 4.84 | 206611570.2479339 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 2000 | 32 | 5.06 | 197628458.49802372 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 3000 | 32 | 4.76 | 210084033.6134454 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 4000 | 32 | 4.73 | 211416490.4862579 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 5000 | 32 | 4.804 | 208159866.77768525 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 6000 | 32 | 4.737 | 211104074.30863416 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 7000 | 32 | 4.717 | 211999152.003392 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 8000 | 32 | 4.728 | 211505922.16582066 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 9000 | 32 | 4.855 | 205973223.48094746 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 10000 | 32 | 4.977 | 200924251.55716294 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 1000 | 4 | 4.8 | 208333333.33333334 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 2000 | 4 | 4.795 | 208550573.51407716 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 3000 | 4 | 4.733 | 211282484.6820199 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 4000 | 4 | 4.74 | 210970464.1350211 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 5000 | 4 | 4.722 | 211774671.74925876 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 6000 | 4 | 4.735 | 211193241.81626186 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 7000 | 4 | 4.727 | 211550666.3845991 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 8000 | 4 | 4.84 | 206611570.2479339 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 9000 | 4 | 4.782 | 209117524.04851526 | 0 | 0 | 0 |
| Atomic Pointer Counter | increment | 10000 | 4 | 4.73 | 211416490.4862579 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 1000 | 32 | 0.45 | 2222222222.2222223 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 2000 | 32 | 0.36 | 2777777777.7777777 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 3000 | 32 | 0.3533 | 2830455703.3682423 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 4000 | 32 | 0.31 | 3225806451.612903 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 5000 | 32 | 0.584 | 1712328767.1232877 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 6000 | 32 | 0.3 | 3333333333.3333335 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 7000 | 32 | 0.2971 | 3365870077.415012 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 8000 | 32 | 0.295 | 3389830508.4745765 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 9000 | 32 | 0.29 | 3448275862.068966 | 0 | 0 | 0 |
| Atomic Pointer Counter | get | 10000 | 32 | 0.296 | 3378378378.3783784 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 1000 | 8 | 4.81 | 207900207.9002079 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 2000 | 8 | 4.779 | 209248796.81941828 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 3000 | 8 | 4.747 | 210659363.8087213 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 4000 | 8 | 4.755 | 210304942.1661409 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 5000 | 8 | 4.742 | 210881484.60565162 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 6000 | 8 | 4.738 | 211059518.78429714 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 7000 | 8 | 4.737 | 211104074.30863416 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 8000 | 8 | 4.75 | 210526315.78947368 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 9000 | 8 | 4.893 | 204373594.93153486 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 10000 | 8 | 4.73 | 211416490.4862579 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 1000 | 2 | 4.8 | 208333333.33333334 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 2000 | 2 | 4.77 | 209643605.870021 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 3000 | 2 | 11.95 | 83682008.36820084 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 4000 | 2 | 4.745 | 210748155.9536354 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 5000 | 2 | 4.67 | 214132762.31263384 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 6000 | 2 | 4.742 | 210881484.60565162 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 7000 | 2 | 4.726 | 211595429.53872198 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 8000 | 2 | 4.732 | 211327134.40405747 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 9000 | 2 | 6.611 | 151263046.43775526 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 10000 | 2 | 9.561 | 104591569.9194645 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 1000 | 16 | 0.52 | 1923076923.076923 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 2000 | 16 | 0.35 | 2857142857.1428576 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 3000 | 16 | 0.34 | 2941176470.588235 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 4000 | 16 | 0.3175 | 3149606299.2125983 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 5000 | 16 | 0.32 | 3125000000 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 6000 | 16 | 0.3333 | 3000300030.0030003 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 7000 | 16 | 0.2929 | 3414134516.899966 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 8000 | 16 | 0.2938 | 3403675970.0476513 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 9000 | 16 | 0.2878 | 3474635163.3078527 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 10000 | 16 | 0.294 | 3401360544.217687 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 1000 | 32 | 4.82 | 207468879.66804978 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 2000 | 32 | 4.795 | 208550573.51407716 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 3000 | 32 | 4.753 | 210393435.72480538 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 4000 | 32 | 4.857 | 205888408.48260242 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 5000 | 32 | 4.752 | 210437710.43771043 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 6000 | 32 | 4.738 | 211059518.78429714 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 7000 | 32 | 4.74 | 210970464.1350211 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 8000 | 32 | 4.735 | 211193241.81626186 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 9000 | 32 | 5.177 | 193162062.97083256 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 10000 | 32 | 4.738 | 211059518.78429714 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 1000 | 2 | 0.53 | 1886792452.8301885 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 2000 | 2 | 0.365 | 2739726027.39726 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 3000 | 2 | 0.33 | 3030303030.30303 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 4000 | 2 | 0.325 | 3076923076.9230766 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 5000 | 2 | 0.314 | 3184713375.7961783 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 6000 | 2 | 0.3117 | 3208213025.344883 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 7000 | 2 | 0.3071 | 3256268316.5092807 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 8000 | 2 | 0.3175 | 3149606299.2125983 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 9000 | 2 | 0.2944 | 3396739130.4347825 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 10000 | 2 | 0.291 | 3436426116.838488 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 1000 | 16 | 4.84 | 206611570.2479339 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 2000 | 16 | 5.005 | 199800199.8001998 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 3000 | 16 | 4.763 | 209951711.10644552 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 4000 | 16 | 4.755 | 210304942.1661409 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 5000 | 16 | 4.744 | 210792580.10118043 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 6000 | 16 | 4.737 | 211104074.30863416 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 7000 | 16 | 4.741 | 210925964.98628983 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 8000 | 16 | 4.756 | 210260723.29688814 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 9000 | 16 | 4.921 | 203210729.526519 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 10000 | 16 | 4.75 | 210526315.78947368 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 1000 | 1 | 4.76 | 210084033.6134454 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 2000 | 1 | 4.735 | 211193241.81626186 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 3000 | 1 | 4.73 | 211416490.4862579 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 4000 | 1 | 4.727 | 211550666.3845991 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 5000 | 1 | 4.726 | 211595429.53872198 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 6000 | 1 | 4.725 | 211640211.64021164 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 7000 | 1 | 4.697 | 212901852.24611455 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 8000 | 1 | 4.811 | 207856994.38786116 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 9000 | 1 | 4.721 | 211819529.76064393 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 10000 | 1 | 4.721 | 211819529.76064393 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 1000 | 1 | 0.38 | 2631578947.368421 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 2000 | 1 | 0.345 | 2898550724.6376815 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 3000 | 1 | 0.3067 | 3260515161.3955007 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 4000 | 1 | 0.3075 | 3252032520.3252034 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 5000 | 1 | 0.29 | 3448275862.068966 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 6000 | 1 | 0.2867 | 3487966515.521451 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 7000 | 1 | 0.2857 | 3500175008.7504373 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 8000 | 1 | 0.2825 | 3539823008.849558 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 9000 | 1 | 0.2822 | 3543586109.1424522 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 10000 | 1 | 0.281 | 3558718861.2099643 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 1000 | 8 | 0.52 | 1923076923.076923 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 2000 | 8 | 0.38 | 2631578947.368421 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 3000 | 8 | 0.3467 | 2884338044.4188056 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 4000 | 8 | 0.31 | 3225806451.612903 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 5000 | 8 | 0.356 | 2808988764.044944 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 6000 | 8 | 0.3083 | 3243593902.043464 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 7000 | 8 | 0.2957 | 3381805884.3422384 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 8000 | 8 | 0.295 | 3389830508.4745765 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 9000 | 8 | 0.2944 | 3396739130.4347825 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 10000 | 8 | 0.292 | 3424657534.2465754 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 1000 | 4 | 4.81 | 207900207.9002079 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 2000 | 4 | 4.76 | 210084033.6134454 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 3000 | 4 | 4.77 | 209643605.870021 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 4000 | 4 | 4.755 | 210304942.1661409 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 5000 | 4 | 4.732 | 211327134.40405747 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 6000 | 4 | 4.743 | 210837022.9812355 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 7000 | 4 | 4.739 | 211014982.06372654 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 8000 | 4 | 4.777 | 209336403.60058615 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 9000 | 4 | 4.969 | 201247735.9629704 | 0 | 0 | 0 |
| Atomic Uint Counter | increment | 10000 | 4 | 4.667 | 214270409.25648168 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 1000 | 4 | 0.53 | 1886792452.8301885 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 2000 | 4 | 0.355 | 2816901408.4507046 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 3000 | 4 | 0.3267 | 3060912151.821243 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 4000 | 4 | 0.3125 | 3200000000 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 5000 | 4 | 0.316 | 3164556962.025316 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 6000 | 4 | 0.2983 | 3352329869.259135 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 7000 | 4 | 0.2971 | 3365870077.415012 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 8000 | 4 | 0.305 | 3278688524.590164 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 9000 | 4 | 0.2922 | 3422313483.9151263 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 10000 | 4 | 0.293 | 3412969283.2764506 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 1000 | 32 | 0.46 | 2173913043.478261 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 2000 | 32 | 0.36 | 2777777777.7777777 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 3000 | 32 | 0.33 | 3030303030.30303 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 4000 | 32 | 0.315 | 3174603174.6031747 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 5000 | 32 | 0.314 | 3184713375.7961783 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 6000 | 32 | 0.2983 | 3352329869.259135 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 7000 | 32 | 0.2971 | 3365870077.415012 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 8000 | 32 | 0.2925 | 3418803418.803419 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 9000 | 32 | 0.3011 | 3321155762.205248 | 0 | 0 | 0 |
| Atomic Uint Counter | get | 10000 | 32 | 0.288 | 3472222222.2222223 | 0 | 0 | 0 |
| Int Counter | increment | 1000 | 8 | 0.45 | 2222222222.2222223 | 0 | 0 | 0 |
| Int Counter | increment | 2000 | 8 | 0.395 | 2531645569.620253 | 0 | 0 | 0 |
| Int Counter | increment | 3000 | 8 | 0.3433 | 2912904165.4529567 | 0 | 0 | 0 |
| Int Counter | increment | 4000 | 8 | 0.325 | 3076923076.9230766 | 0 | 0 | 0 |
| Int Counter | increment | 5000 | 8 | 0.314 | 3184713375.7961783 | 0 | 0 | 0 |
| Int Counter | increment | 6000 | 8 | 0.3117 | 3208213025.344883 | 0 | 0 | 0 |
| Int Counter | increment | 7000 | 8 | 0.2957 | 3381805884.3422384 | 0 | 0 | 0 |
| Int Counter | increment | 8000 | 8 | 0.3038 | 3291639236.339697 | 0 | 0 | 0 |
| Int Counter | increment | 9000 | 8 | 0.2989 | 3345600535.296086 | 0 | 0 | 0 |
| Int Counter | increment | 10000 | 8 | 0.288 | 3472222222.2222223 | 0 | 0 | 0 |
| Int Counter | get | 1000 | 4 | 0.44 | 2272727272.7272725 | 0 | 0 | 0 |
| Int Counter | get | 2000 | 4 | 0.395 | 2531645569.620253 | 0 | 0 | 0 |
| Int Counter | get | 3000 | 4 | 0.3467 | 2884338044.4188056 | 0 | 0 | 0 |
| Int Counter | get | 4000 | 4 | 0.325 | 3076923076.9230766 | 0 | 0 | 0 |
| Int Counter | get | 5000 | 4 | 0.304 | 3289473684.2105265 | 0 | 0 | 0 |
| Int Counter | get | 6000 | 4 | 0.3 | 3333333333.3333335 | 0 | 0 | 0 |
| Int Counter | get | 7000 | 4 | 0.2957 | 3381805884.3422384 | 0 | 0 | 0 |
| Int Counter | get | 8000 | 4 | 0.2925 | 3418803418.803419 | 0 | 0 | 0 |
| Int Counter | get | 9000 | 4 | 0.2978 | 3357958361.3163195 | 0 | 0 | 0 |
| Int Counter | get | 10000 | 4 | 0.288 | 3472222222.2222223 | 0 | 0 | 0 |
| Int Counter | increment | 1000 | 32 | 0.44 | 2272727272.7272725 | 0 | 0 | 0 |
| Int Counter | increment | 2000 | 32 | 0.355 | 2816901408.4507046 | 0 | 0 | 0 |
| Int Counter | increment | 3000 | 32 | 0.3267 | 3060912151.821243 | 0 | 0 | 0 |
| Int Counter | increment | 4000 | 32 | 0.3125 | 3200000000 | 0 | 0 | 0 |
| Int Counter | increment | 5000 | 32 | 0.398 | 2512562814.0703516 | 0 | 0 | 0 |
| Int Counter | increment | 6000 | 32 | 0.305 | 3278688524.590164 | 0 | 0 | 0 |
| Int Counter | increment | 7000 | 32 | 0.3143 | 3181673560.2927136 | 0 | 0 | 0 |
| Int Counter | increment | 8000 | 32 | 0.2963 | 3374957813.027337 | 0 | 0 | 0 |
| Int Counter | increment | 9000 | 32 | 0.29 | 3448275862.068966 | 0 | 0 | 0 |
| Int Counter | increment | 10000 | 32 | 0.294 | 3401360544.217687 | 0 | 0 | 0 |
| Int Counter | get | 1000 | 2 | 0.42 | 2380952380.952381 | 0 | 0 | 0 |
| Int Counter | get | 2000 | 2 | 0.39 | 2564102564.102564 | 0 | 0 | 0 |
| Int Counter | get | 3000 | 2 | 0.3533 | 2830455703.3682423 | 0 | 0 | 0 |
| Int Counter | get | 4000 | 2 | 0.3225 | 3100775193.7984495 | 0 | 0 | 0 |
| Int Counter | get | 5000 | 2 | 0.304 | 3289473684.2105265 | 0 | 0 | 0 |
| Int Counter | get | 6000 | 2 | 0.3017 | 3314550878.3559823 | 0 | 0 | 0 |
| Int Counter | get | 7000 | 2 | 0.2943 | 3397893306.150187 | 0 | 0 | 0 |
| Int Counter | get | 8000 | 2 | 0.3212 | 3113325031.13325 | 0 | 0 | 0 |
| Int Counter | get | 9000 | 2 | 0.29 | 3448275862.068966 | 0 | 0 | 0 |
| Int Counter | get | 10000 | 2 | 0.482 | 2074688796.680498 | 0 | 0 | 0 |
| Int Counter | get | 1000 | 1 | 0.4 | 2500000000 | 0 | 0 | 0 |
| Int Counter | get | 2000 | 1 | 0.335 | 2985074626.8656716 | 0 | 0 | 0 |
| Int Counter | get | 3000 | 1 | 0.3033 | 3297065611.605671 | 0 | 0 | 0 |
| Int Counter | get | 4000 | 1 | 0.295 | 3389830508.4745765 | 0 | 0 | 0 |
| Int Counter | get | 5000 | 1 | 0.292 | 3424657534.2465754 | 0 | 0 | 0 |
| Int Counter | get | 6000 | 1 | 0.2883 | 3468609087.75581 | 0 | 0 | 0 |
| Int Counter | get | 7000 | 1 | 0.2871 | 3483106931.382793 | 0 | 0 | 0 |
| Int Counter | get | 8000 | 1 | 0.2825 | 3539823008.849558 | 0 | 0 | 0 |
| Int Counter | get | 9000 | 1 | 0.2856 | 3501400560.2240896 | 0 | 0 | 0 |
| Int Counter | get | 10000 | 1 | 0.281 | 3558718861.2099643 | 0 | 0 | 0 |
| Int Counter | increment | 1000 | 4 | 0.44 | 2272727272.7272725 | 0 | 0 | 0 |
| Int Counter | increment | 2000 | 4 | 0.355 | 2816901408.4507046 | 0 | 0 | 0 |
| Int Counter | increment | 3000 | 4 | 0.3467 | 2884338044.4188056 | 0 | 0 | 0 |
| Int Counter | increment | 4000 | 4 | 0.3275 | 3053435114.5038166 | 0 | 0 | 0 |
| Int Counter | increment | 5000 | 4 | 0.318 | 3144654088.0503144 | 0 | 0 | 0 |
| Int Counter | increment | 6000 | 4 | 0.31 | 3225806451.612903 | 0 | 0 | 0 |
| Int Counter | increment | 7000 | 4 | 0.29 | 3448275862.068966 | 0 | 0 | 0 |
| Int Counter | increment | 8000 | 4 | 0.2925 | 3418803418.803419 | 0 | 0 | 0 |
| Int Counter | increment | 9000 | 4 | 0.2889 | 3461405330.564209 | 0 | 0 | 0 |
| Int Counter | increment | 10000 | 4 | 0.295 | 3389830508.4745765 | 0 | 0 | 0 |
| Int Counter | get | 1000 | 16 | 0.51 | 1960784313.72549 | 0 | 0 | 0 |
| Int Counter | get | 2000 | 16 | 0.385 | 2597402597.4025974 | 0 | 0 | 0 |
| Int Counter | get | 3000 | 16 | 0.3567 | 2803476310.625175 | 0 | 0 | 0 |
| Int Counter | get | 4000 | 16 | 0.3125 | 3200000000 | 0 | 0 | 0 |
| Int Counter | get | 5000 | 16 | 0.3058 | 3270111183.780248 | 0 | 0 | 0 |
| Int Counter | get | 6000 | 16 | 0.3033 | 3297065611.605671 | 0 | 0 | 0 |
| Int Counter | get | 7000 | 16 | 0.2971 | 3365870077.415012 | 0 | 0 | 0 |
| Int Counter | get | 8000 | 16 | 0.48 | 2083333333.3333335 | 0 | 0 | 0 |
| Int Counter | get | 9000 | 16 | 0.2911 | 3435245620.0618343 | 0 | 0 | 0 |
| Int Counter | get | 10000 | 16 | 0.291 | 3436426116.838488 | 0 | 0 | 0 |
| Int Counter | get | 1000 | 8 | 0.44 | 2272727272.7272725 | 0 | 0 | 0 |
| Int Counter | get | 2000 | 8 | 0.3995 | 2503128911.1389236 | 0 | 0 | 0 |
| Int Counter | get | 3000 | 8 | 0.3433 | 2912904165.4529567 | 0 | 0 | 0 |
| Int Counter | get | 4000 | 8 | 0.3175 | 3149606299.2125983 | 0 | 0 | 0 |
| Int Counter | get | 5000 | 8 | 0.304 | 3289473684.2105265 | 0 | 0 | 0 |
| Int Counter | get | 6000 | 8 | 0.3 | 3333333333.3333335 | 0 | 0 | 0 |
| Int Counter | get | 7000 | 8 | 0.3071 | 3256268316.5092807 | 0 | 0 | 0 |
| Int Counter | get | 8000 | 8 | 0.2913 | 3432887058.0157914 | 0 | 0 | 0 |
| Int Counter | get | 9000 | 8 | 0.2933 | 3409478349.8124785 | 0 | 0 | 0 |
| Int Counter | get | 10000 | 8 | 0.288 | 3472222222.2222223 | 0 | 0 | 0 |
| Int Counter | increment | 1000 | 1 | 0.38 | 2631578947.368421 | 0 | 0 | 0 |
| Int Counter | increment | 2000 | 1 | 0.325 | 3076923076.9230766 | 0 | 0 | 0 |
| Int Counter | increment | 3000 | 1 | 0.3033 | 3297065611.605671 | 0 | 0 | 0 |
| Int Counter | increment | 4000 | 1 | 0.295 | 3389830508.4745765 | 0 | 0 | 0 |
| Int Counter | increment | 5000 | 1 | 0.49 | 2040816326.5306122 | 0 | 0 | 0 |
| Int Counter | increment | 6000 | 1 | 0.2933 | 3409478349.8124785 | 0 | 0 | 0 |
| Int Counter | increment | 7000 | 1 | 0.2857 | 3500175008.7504373 | 0 | 0 | 0 |
| Int Counter | increment | 8000 | 1 | 0.2825 | 3539823008.849558 | 0 | 0 | 0 |
| Int Counter | increment | 9000 | 1 | 0.2811 | 3557452863.749555 | 0 | 0 | 0 |
| Int Counter | increment | 10000 | 1 | 0.279 | 3584229390.681003 | 0 | 0 | 0 |
| Int Counter | get | 1000 | 32 | 0.52 | 1923076923.076923 | 0 | 0 | 0 |
| Int Counter | get | 2000 | 32 | 0.36 | 2777777777.7777777 | 0 | 0 | 0 |
| Int Counter | get | 3000 | 32 | 0.3567 | 2803476310.625175 | 0 | 0 | 0 |
| Int Counter | get | 4000 | 32 | 0.315 | 3174603174.6031747 | 0 | 0 | 0 |
| Int Counter | get | 5000 | 32 | 0.304 | 3289473684.2105265 | 0 | 0 | 0 |
| Int Counter | get | 6000 | 32 | 0.305 | 3278688524.590164 | 0 | 0 | 0 |
| Int Counter | get | 7000 | 32 | 0.2929 | 3414134516.899966 | 0 | 0 | 0 |
| Int Counter | get | 8000 | 32 | 0.2963 | 3374957813.027337 | 0 | 0 | 0 |
| Int Counter | get | 9000 | 32 | 0.2956 | 3382949932.3410015 | 0 | 0 | 0 |
| Int Counter | get | 10000 | 32 | 0.291 | 3436426116.838488 | 0 | 0 | 0 |
| Int Counter | increment | 1000 | 2 | 0.42 | 2380952380.952381 | 0 | 0 | 0 |
| Int Counter | increment | 2000 | 2 | 0.355 | 2816901408.4507046 | 0 | 0 | 0 |
| Int Counter | increment | 3000 | 2 | 0.3267 | 3060912151.821243 | 0 | 0 | 0 |
| Int Counter | increment | 4000 | 2 | 0.315 | 3174603174.6031747 | 0 | 0 | 0 |
| Int Counter | increment | 5000 | 2 | 0.3 | 3333333333.3333335 | 0 | 0 | 0 |
| Int Counter | increment | 6000 | 2 | 0.2967 | 3370407819.346141 | 0 | 0 | 0 |
| Int Counter | increment | 7000 | 2 | 0.3129 | 3195909236.1776924 | 0 | 0 | 0 |
| Int Counter | increment | 8000 | 2 | 0.2913 | 3432887058.0157914 | 0 | 0 | 0 |
| Int Counter | increment | 9000 | 2 | 0.29 | 3448275862.068966 | 0 | 0 | 0 |
| Int Counter | increment | 10000 | 2 | 0.295 | 3389830508.4745765 | 0 | 0 | 0 |
| Int Counter | increment | 1000 | 16 | 0.47 | 2127659574.4680853 | 0 | 0 | 0 |
| Int Counter | increment | 2000 | 16 | 0.375 | 2666666666.6666665 | 0 | 0 | 0 |
| Int Counter | increment | 3000 | 16 | 0.3267 | 3060912151.821243 | 0 | 0 | 0 |
| Int Counter | increment | 4000 | 16 | 0.315 | 3174603174.6031747 | 0 | 0 | 0 |
| Int Counter | increment | 5000 | 16 | 0.328 | 3048780487.8048778 | 0 | 0 | 0 |
| Int Counter | increment | 6000 | 16 | 0.3 | 3333333333.3333335 | 0 | 0 | 0 |
| Int Counter | increment | 7000 | 16 | 0.2986 | 3348961821.8352313 | 0 | 0 | 0 |
| Int Counter | increment | 8000 | 16 | 0.2925 | 3418803418.803419 | 0 | 0 | 0 |
| Int Counter | increment | 9000 | 16 | 0.2933 | 3409478349.8124785 | 0 | 0 | 0 |
| Int Counter | increment | 10000 | 16 | 0.288 | 3472222222.2222223 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 1000 | 1 | 132.6 | 7541478.1297134245 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 2000 | 1 | 16.21 | 61690314.62060456 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 3000 | 1 | 16.16 | 61881188.11881188 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 4000 | 1 | 16.17 | 61842918.98577612 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 5000 | 1 | 16.13 | 61996280.22318661 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 6000 | 1 | 16.13 | 61996280.22318661 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 7000 | 1 | 16.13 | 61996280.22318661 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 8000 | 1 | 16.14 | 61957868.649318464 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 9000 | 1 | 16.13 | 61996280.22318661 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 10000 | 1 | 16.12 | 62034739.45409429 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 1000 | 8 | 16.35 | 61162079.510703355 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 2000 | 8 | 16.29 | 61387354.205033764 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 3000 | 8 | 15.05 | 66445182.72425249 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 4000 | 8 | 16.18 | 61804697.156983934 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 5000 | 8 | 16.17 | 61842918.98577612 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 6000 | 8 | 16.16 | 61881188.11881188 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 7000 | 8 | 16.17 | 61842918.98577612 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 8000 | 8 | 15.95 | 62695924.76489028 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 9000 | 8 | 19.17 | 52164840.89723526 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 10000 | 8 | 16.14 | 61957868.649318464 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 1000 | 16 | 16.08 | 62189054.72636817 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 2000 | 16 | 16.29 | 61387354.205033764 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 3000 | 16 | 16.23 | 61614294.51632778 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 4000 | 16 | 16.2 | 61728395.061728396 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 5000 | 16 | 16.2 | 61728395.061728396 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 6000 | 16 | 16.16 | 61881188.11881188 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 7000 | 16 | 16.19 | 61766522.544780724 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 8000 | 16 | 16.15 | 61919504.64396285 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 9000 | 16 | 16.47 | 60716454.159077115 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 10000 | 16 | 16.14 | 61957868.649318464 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 1000 | 8 | 15.79 | 63331222.29259025 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 2000 | 8 | 15.79 | 63331222.29259025 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 3000 | 8 | 15.65 | 63897763.57827476 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 4000 | 8 | 15.6 | 64102564.102564104 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 5000 | 8 | 15.66 | 63856960.408684544 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 6000 | 8 | 15.56 | 64267352.185089976 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 7000 | 8 | 15.11 | 66181336.86300463 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 8000 | 8 | 19.79 | 50530570.99545225 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 9000 | 8 | 15.75 | 63492063.49206349 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 10000 | 8 | 15.55 | 64308681.67202572 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 1000 | 32 | 15.86 | 63051702.3959647 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 2000 | 32 | 15.69 | 63734862.97004461 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 3000 | 32 | 14.77 | 67704807.04129994 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 4000 | 32 | 15.66 | 63856960.408684544 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 5000 | 32 | 15.57 | 64226075.78676943 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 6000 | 32 | 15.56 | 64267352.185089976 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 7000 | 32 | 15.7 | 63694267.51592357 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 8000 | 32 | 15.55 | 64308681.67202572 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 9000 | 32 | 15.68 | 63775510.20408163 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 10000 | 32 | 15.56 | 64267352.185089976 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 1000 | 2 | 16.39 | 61012812.69066504 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 2000 | 2 | 16.8 | 59523809.52380952 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 3000 | 2 | 16.27 | 61462814.99692686 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 4000 | 2 | 16.18 | 61804697.156983934 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 5000 | 2 | 16.31 | 61312078.479460455 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 6000 | 2 | 16.15 | 61919504.64396285 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 7000 | 2 | 16.15 | 61919504.64396285 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 8000 | 2 | 16.14 | 61957868.649318464 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 9000 | 2 | 16.21 | 61690314.62060456 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 10000 | 2 | 16.13 | 61996280.22318661 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 1000 | 1 | 15.66 | 63856960.408684544 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 2000 | 1 | 15.57 | 64226075.78676943 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 3000 | 1 | 15.58 | 64184852.37483954 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 4000 | 1 | 15.55 | 64308681.67202572 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 5000 | 1 | 18.64 | 53648068.669527896 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 6000 | 1 | 15.53 | 64391500.321957506 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 7000 | 1 | 15.55 | 64308681.67202572 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 8000 | 1 | 15.54 | 64350064.35006435 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 9000 | 1 | 15.53 | 64391500.321957506 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 10000 | 1 | 15.53 | 64391500.321957506 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 1000 | 16 | 15.83 | 63171193.93556538 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 2000 | 16 | 15.69 | 63734862.97004461 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 3000 | 16 | 15.75 | 63492063.49206349 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 4000 | 16 | 19.84 | 50403225.80645161 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 5000 | 16 | 15.62 | 64020486.55569783 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 6000 | 16 | 15.67 | 63816209.31716656 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 7000 | 16 | 15.03 | 66533599.46773121 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 8000 | 16 | 15.56 | 64267352.185089976 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 9000 | 16 | 15.79 | 63331222.29259025 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 10000 | 16 | 15.54 | 64350064.35006435 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 1000 | 2 | 15.95 | 62695924.76489028 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 2000 | 2 | 15.63 | 63979526.55150352 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 3000 | 2 | 15.59 | 64143681.847338036 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 4000 | 2 | 15.57 | 64226075.78676943 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 5000 | 2 | 15.57 | 64226075.78676943 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 6000 | 2 | 15.56 | 64267352.185089976 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 7000 | 2 | 15.57 | 64226075.78676943 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 8000 | 2 | 15.57 | 64226075.78676943 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 9000 | 2 | 15.58 | 64184852.37483954 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 10000 | 2 | 15.55 | 64308681.67202572 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 1000 | 32 | 16.48 | 60679611.65048543 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 2000 | 32 | 16.24 | 61576354.67980296 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 3000 | 32 | 16.22 | 61652281.13440198 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 4000 | 32 | 16.19 | 61766522.544780724 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 5000 | 32 | 19.51 | 51255766.27370579 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 6000 | 32 | 16.25 | 61538461.538461536 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 7000 | 32 | 16.17 | 61842918.98577612 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 8000 | 32 | 16.16 | 61881188.11881188 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 9000 | 32 | 19.46 | 51387461.4594039 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 10000 | 32 | 16.14 | 61957868.649318464 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 1000 | 4 | 16.39 | 61012812.69066504 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 2000 | 4 | 16.25 | 61538461.538461536 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 3000 | 4 | 16.2 | 61728395.061728396 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 4000 | 4 | 16.17 | 61842918.98577612 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 5000 | 4 | 16.2 | 61728395.061728396 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 6000 | 4 | 16.2 | 61728395.061728396 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 7000 | 4 | 20.74 | 48216007.71456124 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 8000 | 4 | 16.15 | 61919504.64396285 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 9000 | 4 | 16.38 | 61050061.050061055 | 0 | 0 | 0 |
| Int Counter With Mutex | increment | 10000 | 4 | 16.14 | 61957868.649318464 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 1000 | 4 | 15.81 | 63251106.89437065 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 2000 | 4 | 15.68 | 63775510.20408163 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 3000 | 4 | 15.61 | 64061499.03907752 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 4000 | 4 | 15.62 | 64020486.55569783 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 5000 | 4 | 15.58 | 64184852.37483954 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 6000 | 4 | 15.64 | 63938618.9258312 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 7000 | 4 | 15.55 | 64308681.67202572 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 8000 | 4 | 15.55 | 64308681.67202572 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 9000 | 4 | 15.63 | 63979526.55150352 | 0 | 0 | 0 |
| Int Counter With Mutex | get | 10000 | 4 | 15.57 | 64226075.78676943 | 0 | 0 | 0 |