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
get
is 12.42% slower than Atomic Uint Counterget
. - Atomic Pointer Counter
get
is 11.27% slower than Int Counterget
. - Atomic Pointer Counter
get
is 97.65% faster than Int Counter With Mutexget
. - Atomic Pointer Counter
increment
is 1.53% faster than Atomic Uint Counterincrement
. - Atomic Pointer Counter
increment
is 1406.08% slower than Int Counterincrement
. - Atomic Pointer Counter
increment
is 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
get
is 11.05% faster than Atomic Pointer Counterget
. - Atomic Uint Counter
get
is 1.02% faster than Int Counterget
. - Atomic Uint Counter
get
is 97.91% faster than Int Counter With Mutexget
. - Atomic Uint Counter
increment
is 1.56% slower than Atomic Pointer Counterincrement
. - Atomic Uint Counter
increment
is 1429.55% slower than Int Counterincrement
. - Atomic Uint Counter
increment
is 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
get
is 10.13% faster than Atomic Pointer Counterget
. - Int Counter
get
is 1.03% slower than Atomic Uint Counterget
. - Int Counter
get
is 97.89% faster than Int Counter With Mutexget
. - Int Counter
increment
is 93.36% faster than Atomic Pointer Counterincrement
. - Int Counter
increment
is 93.46% faster than Atomic Uint Counterincrement
. - Int Counter
increment
is 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
get
is 4163.54% slower than Atomic Pointer Counterget
. - Int Counter With Mutex
get
is 4693.14% slower than Atomic Uint Counterget
. - Int Counter With Mutex
get
is 4644.10% slower than Int Counterget
. - Int Counter With Mutex
increment
is 272.84% slower than Atomic Pointer Counterincrement
. - Int Counter With Mutex
increment
is 267.12% slower than Atomic Uint Counterincrement
. - Int Counter With Mutex
increment
is 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 |