Geliştirici haftanın gününü hesaplayan hızlı algoritmalar geliştirdi
Öne çıkanlar
- Yeni yöntem haftanın günü hesabını 32-bit aralıkta tek bir çarpma ve kaydırma işlemine düşürdü.
- Rust tarih kütüphanesi Jiff, bu algoritmayla üst seviye işlevlerde yüzde 40 performans kazandı.
- Yaklaşım 7 sayısının Mersenne sayısı olma özelliğini kullanarak standart modülo maliyetini ortadan kaldırdı.
Yazılımcı Ben Joffe, gün sayısını (rata-die) haftanın gününe dönüştüren işlem için düşük seviyeli yeni algoritmalar geliştirdiğini duyurdu. Tarih kütüphaneleri ve veri tabanı motorlarında sıklıkla başvurulan bu hesaplama, standart modülo işlemlerinin işlemci seviyesindeki ek maliyetleri nedeniyle performans kaybına yol açıyordu. Joffe, 7 sayısının Mersenne sayısı olmasından yararlanarak işlemci döngülerini asgari düzeye indiren yöntemler tasarladı.
Yayımlanan yöntemler, klasik bölme ve kalan işlemlerini tek bir çarpma, toplama ve sağa kaydırma adımına indirgiyor. 32-bit Unix gün sayımını temel alan dar aralıklı yaklaşım, yaklaşık 242 bin yıllık bir zaman dilimini kapsıyor ve ARM mimarisinde tek bir birleşik komutla (MADD) çalıştırılabiliyor. Tam aralık gerektiren durumlar için ise 64-bit genişletme ve özel x86 assembly dizilimleri sunuldu.
Yeni algoritmaların performansı, mevcut standart çözümlerin önüne geçti. Rust dilinde geliştirilen modern tarih ve saat kütüphanesi Jiff, bu yöntemi benimseyerek ayın belirli günlerini hesaplayan üst seviye işlevlerde yüzde 40 hız artışı elde etti. Joffe, aynı matematiksel yaklaşımın saat hesaplamalarında kullanılan mod 24 ve mod 60 gibi diğer bölenlere de uyarlanabileceğini açıkladı.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.