Sobes.tech
Junior — Middle

Sync.Map жана синхрондоштурулган mutex колдонуп маалыматка кирүү ылдамдыгын салыштырып анализдөө кандай болду?

sobes.tech AI

AIден жооп

Go тилинде маалыматтарга кирүүнүн ылдамдыгын салыштыруу үчүн sync.Map жана синхрондоштурулган mutex (sync.Mutex) колдонуп, testing пакети аркылуу бенчмарктарды жүргүздүм.

Негизги пункттар:

  • sync.Map көп окуу операциялары жана аз жазуу операциялары менен сценарийлер үчүн оптималдаштырылган.
  • Mutex жөнөкөй картанын (map) кирүүсүндө блоктоо камсыздайт, бул жогорку атаандаштыкта кыска жолду түзүшү мүмкүн.

Жөнөкөй бенчмарк мисалы:

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()
    }
}

Менин тесттеримде, sync.Map жогорку деңгээлдеги атаандаштыкта жакшы иштеди, ал эми mutex төмөн атаандаштыкта жана тез жазууларда тезирээк болду. Тандоо конкреттүү колдонуу сценарийине көз каранды.