GitHub'un Blackbird'ünde kod arama için branch'siz case-folding
GitHub Blackbird'ün case-folding hızını nasıl 15 kata çıkardığı: erken çıkışı kaldırıp branch'siz, vektörleştirilebilir bir döngüyle bellek hızına ulaşma.
GitHub'ın 180 milyon depoyu ve 480TB kaynak kodunu indeksleyen arama motoru Blackbird, her byte'ı ngram çıkarmadan önce case-fold ediyor. Bu ölçekte basit bir işlemin hızı bile kritik hale geliyor; ekip, Rust'ta yazılmış casefold adlı bir crate'i açık kaynak olarak yayınladı.
En çarpıcı bulgu şu: ASCII hızlı yolunda en büyük kazanç bir optimizasyon eklemekten değil, kaldırmaktan geldi. İlk ASCII olmayan byte'ta erken çıkış (early-exit) yapan yaygın döngü sezgisel olarak mantıklı görünse de, derleyicinin döngüyü vektörleştirmesini engelliyor. Erken çıkışı kaldırıp tüm tampon belleği branch'siz biçimde tarayarak Apple M4 üzerinde 3 GiB/s'den 45 GiB/s'nin üzerine, yani bellek bant genişliğine ulaşılmış.
Önemli bir ayrım da lowercasing (küçük harfe çevirme, görüntüleme için, yerel ayara duyarlı) ile case folding (karşılaştırma için, bağlamdan bağımsız) arasında. ß, İ ve son sigma gibi karakterlerde bu iki işlem ayrışıyor; casefold crate'i sadece basit 1-e-1 katlamaları uyguluyor, ripgrep gibi araçlarla tutarlı kalmak için tam (full) ve Türkçe'ye özgü katlamaları hariç tutuyor.
Mühendisler için ders net: branch'siz kod scalar yürütmede yavaşlayabilir, ancak vektörleştirmenin önünü açan bir etkinleştirici olarak kullanıldığında asıl kazanç ortaya çıkıyor.