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 Counter get.
  • Atomic Pointer Counter get is 11.27% slower than Int Counter get.
  • Atomic Pointer Counter get is 97.65% faster than Int Counter With Mutex get.
  • Atomic Pointer Counter increment is 1.53% faster than Atomic Uint Counter increment.
  • Atomic Pointer Counter increment is 1406.08% slower than Int Counter increment.
  • Atomic Pointer Counter increment is 73.18% faster than Int Counter With Mutex increment.
type AtomicPointerCounter struct {
	count uint64
}

func (c *AtomicPointerCounter) increment() {
	atomic.AddUint64(&c.count, 1)
}

func (c *AtomicPointerCounter) get() uint64 {
	return atomic.LoadUint64(&c.count)
}
Benchmark Code
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 Counter get.
  • Atomic Uint Counter get is 1.02% faster than Int Counter get.
  • Atomic Uint Counter get is 97.91% faster than Int Counter With Mutex get.
  • Atomic Uint Counter increment is 1.56% slower than Atomic Pointer Counter increment.
  • Atomic Uint Counter increment is 1429.55% slower than Int Counter increment.
  • Atomic Uint Counter increment is 72.76% faster than Int Counter With Mutex increment.
type AtomicUintCounter struct {
	count atomic.Uint64
}

func (c *AtomicUintCounter) increment() {
	c.count.Add(1)
}

func (c *AtomicUintCounter) get() uint64 {
	return c.count.Load()
}
Benchmark Code
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 Counter get.
  • Int Counter get is 1.03% slower than Atomic Uint Counter get.
  • Int Counter get is 97.89% faster than Int Counter With Mutex get.
  • Int Counter increment is 93.36% faster than Atomic Pointer Counter increment.
  • Int Counter increment is 93.46% faster than Atomic Uint Counter increment.
  • Int Counter increment is 98.22% faster than Int Counter With Mutex increment.
type IntCounter struct {
	count uint64
}

func (c IntCounter) increment() {
	c.count++
}

func (c IntCounter) get() uint64 {
	return c.count
}
Benchmark Code
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 Counter get.
  • Int Counter With Mutex get is 4693.14% slower than Atomic Uint Counter get.
  • Int Counter With Mutex get is 4644.10% slower than Int Counter get.
  • Int Counter With Mutex increment is 272.84% slower than Atomic Pointer Counter increment.
  • Int Counter With Mutex increment is 267.12% slower than Atomic Uint Counter increment.
  • Int Counter With Mutex increment is 5515.33% slower than Int Counter increment.
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
}
Benchmark Code
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