读写操作的频率大致相同,而且 map 的 key 数量可能会随着时间的推移而增加。在这种情况下,使用 sync.Map 和 map 加 sync.Mutex 都是可行的,但是哪种方法更好可能取决于具体的性能需求和测试结果。
sync.Map 的设计目标是用于读多写少的场景,特别是当 key 的数量在程序运行期间保持相对稳定时。在这种情况下,sync.Map 可以提供比 map 加 sync.Mutex 更好的性能。然而,如果写操作的频率与读操作相当,或者 key 的数量会有大的变化,那么 sync.Map 的性能可能会不如 map 加 sync.Mutex。
另一方面,sync.Map 的 API 比 map 加 sync.Mutex 更复杂,特别是如果你需要执行像获取元素数量这样的操作时。而且,sync.Map 的实现也比 map 加 sync.Mutex 更复杂,这可能会导致更难以预测的性能特性。