Ana içeriğe geç
Programlama

Ruby'deki küçük boyutlu Hash yapıları SWAR yöntemiyle hızlandırılıyor

Öne çıkanlar

  • Ruby, 8 elemana kadar olan Hash yapılarını doğrusal arama yapan ar_table içinde saklıyor.
  • Doğrusal arama nedeniyle 8. ögeye erişim ilk ögeye kıyasla yaklaşık 1,5 kat daha yavaş çalışıyor.
  • SWAR tekniği 8 baytlık karma ipuçlarını tek bir 64-bit işlemle kıyaslayarak aramayı O(1) seviyesine taşıyor.

Ruby geliştiricisi Jean Boussier, sekiz veya daha az öge içeren küçük Ruby Hash yapılarında anahtar arama sürecini hızlandırmak için SWAR (SIMD within a register) yaklaşımını analiz etti. Ruby, bellek tasarrufu amacıyla sekiz elemana kadar olan sözlüklerde karma tablosu yerine "ar_table" adlı dizi tabanlı bir yapı kullanıyor ve arama işlemlerini doğrusal olarak O(n) karmaşıklığında yürütüyor.

Boussier, tek baytlık karma ipuçlarını (ar_hint) döngüyle tek tek aramak yerine, 64-bitlik tek bir işlemci kaydında 8 baytı birden işleyen bitsel işlemler önerdi. Bu sayede arama maliyeti O(1) düzeyine çekilerek dizinin sonundaki ögelere erişim hızındaki yavaşlama ortadan kaldırılabiliyor.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.