Sobes.tech
Junior — Middle

sync.Map və sinxronlaşdırılmış mutex istifadə edərək məlumatlara giriş sürətinin müqayisəli analizini necə apardınız?

sobes.tech Süni İntellekt

AI-dan cavab

Go-da sync.Map və sinxronlaşdırılmış mutex (sync.Mutex) istifadə edərək məlumatlara giriş sürətini müqayisə etmək üçün testing paketindən istifadə edərək benchmarklar apardım.

Əsas nöqtələr:

  • sync.Map çox sayda oxuma əməliyyatı və az sayda yazma əməliyyatları üçün optimallaşdırılıb.
  • Mutex adi xəritəyə (map) giriş zamanı kilidləmə təmin edir və bu, yüksək rəqabət şəraitində tıxac yarada bilər.

Sadə benchmark nümunəsi:

func BenchmarkSyncMapLoad(b *testing.B) {
    var m sync.Map
    m.Store("key", "value")
    b.ResetTimer()
    for i := 0; i < b.N; i++ {
        m.Load("key")
    }
}

func BenchmarkMutexMapLoad(b *testing.B) {
    m := make(map[string]string)
    m["key"] = "value"
    var mu sync.Mutex
    b.ResetTimer()
    for i := 0; i < b.N; i++ {
        mu.Lock()
        _ = m["key"]
        mu.Unlock()
    }
}

Mənim testlərimdə, sync.Map yüksək səviyyədə çoxsaylı oxuma zamanı daha yaxşı performans göstərdi, mutex isə aşağı rəqabət və tez-tez yazma əməliyyatlarında daha sürətli idi. Seçim istifadə ssenarisindən asılıdır.