Linux çekirdeği için 4 kata kadar daha hızlı çalışan memchr fonksiyonunun bir uygulaması önerildi

Bir dizideki bir sembolü aramak için kullanılan memchr() fonksiyonunun optimize edilmiş uygulamasını içeren bir dizi yama, Linux çekirdeğine dahil edilmek üzere önerilmiştir. Bayt bayt karşılaştırmanın kullanıldığı eski sürümün aksine, önerilen uygulama 64 ve 32 bit CPU kayıtlarının tam kullanımı dikkate alınarak oluşturulmuştur. Bayt yerine karşılaştırma, bir seferde en az 4 baytın karşılaştırılmasına olanak tanıyan makine kelimeleri kullanılarak gerçekleştirilir.

Büyük dizelerde arama yaparken, yeni seçeneğin eskisinden yaklaşık 4 kat daha hızlı olduğu ortaya çıktı (örneğin, 1000 karakterlik dizeler için). Küçük dizeler için, yeni uygulamanın verimliliği o kadar önemli değil ancak orijinal versiyonla karşılaştırıldığında yine de daha yüksek. Linux çekirdeğinde memchr()'da işlenen dizelerin boyutu 512 bayta ulaşır. Aranan karakterin dizenin sonunda olduğu durumda 512 baytlık dizeler için performans kazancı %20'dir.

5.18 çekirdeğinin 32 bit ve 64 bit mimariler için yeni "memchr()" seçeneğiyle test edilmesi herhangi bir sorun ortaya çıkarmadı. Optimize edilmiş “memchr()” sürümü kullanıldığında çekirdek alt sistemlerinin genel performans kazanımı henüz değerlendirilmemiştir ve uygulamayı değiştirmenin fizibilitesi analiz edilmemiştir (çekirdek kodunda memchr() işlevine yapılan çağrılar 129 kez gerçekleşir) (sürücü kodu ve dosya sistemleri dahil).

Kaynak: opennet.ru

Yorum ekle