3 puan yazan GN⁺ 2023-09-19 | Henüz yorum yok. | WhatsApp'ta paylaş
  • Zig ve Rust'ta enum dizilerinin bellek verimliliğine dair bir yazı
  • Rust'ta değişken boyutlu enum'lar (veya etiketli union'lar), en büyük varyant için yeterli veri ayırmayı gerektirdiğinden önemli ölçüde bellek parçalanmasına yol açabilir
  • Bu bellek parçalanması, çok sayıda enum Vec veya HashMap içinde toplandığında sorun yaratabilir
  • Yazar, Rust'ta belirli enum'lar için özelleşmiş veri yapıları oluşturarak parçalanmayı azaltmanın neredeyse imkansız olduğunu öne sürüyor
  • Zig ise daha esnek ve verimli veri yapısı dönüşümlerine izin veriyor
  • Yazar, özellikle derleyiciler ve sözdizimi ağacı düğümleri bağlamında, bellek parçalanmasını azaltmanın önemini vurguluyor
  • Yazı, paketleme verimliliğini artırmanın en yaygın yolunun, enum varyantlarını mümkün olduğunca küçük tutmak için etiketli indeksler kullanmak olduğunu öne sürüyor
  • Zig'in aşamalı derlemesi, herhangi bir tür için genel olarak struct-of-arrays (SoA) dönüşümü yapan kapsayıcı türlere izin veriyor
  • Yazar, parçalanmayı daha da azaltmak için variants arrays of arrays (AoVA) kavramını tanıtıyor
  • Yazıda ayrıca boyut eşdeğerlik sınıfları kavramı da ele alınıyor; burada aynı boyuttaki varyantlar birlikte gruplanarak kapsayıcı içindeki toplam vektör sayısı azaltılıyor
  • Yazar, bu veri yapısının bir prototipini Zig'de gerçekleştirdi ve alan türleri, bayt ve bit boyutları ile discriminator kontrollerine yönelik derleyici yerleşiklerini kullandı
  • Yazı, Rust'ta son derece verimli genel veri yapıları yazmanın zorlayıcı olabileceği, ancak Zig'in comptime özelliğinin daha yapılandırılabilir bellek yerleşimlerine imkan tanıdığı sonucuna varıyor

Henüz yorum yok.

Henüz yorum yok.