Ana Sayfa

Go'da Eşzamanlı Hash Map Performans Karşılaştırması

1 dk okuma

Bu teknik makale, Go programlama dilindeki çeşitli eşzamanlı hash map (eşlem) uygulamalarının performansını karşılaştıran kapsamlı bir kıyaslama sunmaktadır. Amaç, farklı eşlem tasarımlarının çeşitli iş yükleri altında nasıl performans gösterdiğini ortaya koymaktır. Kıyaslamada Go standart kütüphanesindeki sync.Map (Go 1.24 itibarıyla HashTrieMap tabanlı) ile birlikte xsync.Map, concurrent-map ve go-lockfree-hashmap gibi üçüncü taraf kütüphaneler incelenmiştir. Her bir uygulamanın kendine özgü bir mimarisi bulunmaktadır; örneğin, sync.Map kilitlenmeyen okumalar ve düğüm başına kilitli yazmalar sunarken, xsync.Map önbellek hattı boyutunda bölmeler ve işbirlikçi yeniden boyutlandırma kullanır. concurrent-map kilitlenmeyen bir yapıya sahipken, go-lockfree-hashmap Harris'in kilitlenmeyen bağlı liste algoritmasını temel alır. Ayrıca, sync.RWMutex ile korunan sabit parçalı (sharded) bir tasarım da kıyaslamaya dahil edilmiştir.

Kıyaslama metodolojisi, farklı okuma/yazma/silme oranlarına sahip iş yüklerini içerir: %100 okuma, %99 okuma, %90 okuma ve %75 okuma senaryoları. Ayrıca, eşzamanlı erişim altında yineleme performansını ölçmek için çekişmeli aralık testleri de yapılmıştır. Kıyaslamalar hem string hem de int anahtar tipleriyle ve L1 önbellekten RAM'e taşan 100'den 1.0.000.000'a kadar değişen eşlem boyutlarıyla gerçekleştirilmiştir. Haritaların önceden doldurulup doldurulmadığına göre "WarmUp" ve "NoWarmUp" olmak üzere iki farklı başlangıç durumu da değerlendirilmiştir. Bu detaylı kıyaslama, geliştiricilere Go uygulamalarında eşzamanlı eşlem seçimi konusunda bilinçli kararlar vermeleri için değerli veriler sunmaktadır.

İçgörü

Go geliştiricileri için farklı eşzamanlı hash map uygulamalarının performans karakteristiklerini anlamak, yüksek performanslı ve ölçeklenebilir sistemler tasarlamak açısından kritik öneme sahiptir.

Kaynak