合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
[TOC] ## 概述 sync.Map 与写锁和读写锁的区别 写 ``` 方法名 含义 压测结果 BenchmarkBuiltinMapStoreParalell-4 map+mutex 写入元素 237.1 ns/op BenchmarkBuiltinRwMapStoreParalell-4 map+rwmutex 写入元素 207.8 ns/op BenchmarkSyncMapStoreParalell-4 sync.map 写入元素 509.3 ns/op ``` 查找 ``` BenchmarkBuiltinMapLookupParalell-4 map+mutex 查找元素 166.7 ns/op BenchmarkBuiltinRwMapLookupParalell-4 map+rwmutex 查找元素 60.49 ns/op BenchmarkSyncMapLookupParalell-4 sync.map 查找元素 53.39 ns/op ``` 删除 ``` 方法名 含义 压测结果 BenchmarkBuiltinMapDeleteParalell-4 map+mutex 删除元素 168.3 ns/op BenchmarkBuiltinRwMapDeleteParalell-4 map+rwmutex 删除元素 188.5 ns/op BenchmarkSyncMapDeleteParalell-4 sync.map 删除元素 41.54 ns/op ``` ## 结果 根据上述的压测结果,我们可以得出`sync.Map`类型: * 在读和删场景上的性能是最佳的,领先一倍有多。 * 在写入场景上的性能非常差,落后原生 map+锁整整有一倍之多。 因此在实际的业务场景中。假设是读多写少的场景,会更建议使用`sync.Map`类型