golangは、原子性能試験のミューテックスを作りました

FUNC BenchmarkMutex(b *表testing.B){ 
    VAR番号int型
    :ロック = 同期.Mutex {}
     のための I:= 0 ; I ++; iがbNのを< { 
        行くFUNC(){ 
            lock.Unlock()延期
            lock.Lock() ++ 
        }()
    } 
} 

BenchmarkAtomic FUNC(B * testing.B){ 
    VAR番号INT32 
     I:= 0 ; iは++; iがbNのを< { 
        (){FUNC行く
            atomic.AddInt32( 番号1  
        )(}
    } 
}

パフォーマンスの違いを比較するためにbenchmarkMutexとbenchmarkAtomic 2つのミューテックス機能をテスト

$ゴーテスト-v -CPU 124 -benchmem -bench =  
グースネック:ダーウィン
goarch:AMD64の
PKG:のpuzzlers / article21 / Q3 
BenchmarkMutex            1000000               2949の上のNS /              424でB /           0 ALLOCS / オン
BenchmarkMutex - 2つの         5000000                336でNS /               22でB /           0 ALLOCS / オン
BenchmarkMutex - 4         10000000                205 NS /で                0 B /で          0 ALLOCS / に関する
ベンチマーク原子           2000000               1745の NS /オン              156 B / AT           0 ALLOCS / に関する
ベンチマーク原子 - 2        10000000                176ナノ秒/ AT                0 B / AT           0 ALLOCS / に関する
ベンチマーク原子 - 4        10000000                225でNS /                0でB /           0 ALLOCS / 
PASS 
OKのpuzzlers / article21 / Q3    26 .179sを

我々は関係なく、CPUとメモリ消費量のミューテックスロックよりも高い原子ロックミューテックスのパフォーマンスから実行するよりも優れていることがわかりました

おすすめ

転載: www.cnblogs.com/jackey2015/p/11737570.html