1 puan yazan GN⁺ 2023-07-07 | 1 yorum | WhatsApp'ta paylaş
  • Clang tarafından üretilen C kodu döngüsündeki optimizasyon fırsatlarını inceleyen bir yazı
  • Döngü, dizgedeki karakterlere göre bir sayıyı artırıyor veya azaltıyor.
  • Yazar, null sonlandırıcı yerine 'p' ve 's' karakterlerine göre optimize etmek için döngüyü yeniden düzenliyor.
  • Yazar, koşullu dallanmayı kaldırmak için aritmetik ve koşullu taşıma kullanıyor.
  • Optimize edilmiş kod, özgün koda kıyasla 6,73 katlık kayda değer bir hız artışı sağlıyor.
  • Yazar ayrıca başka optimizasyon tekniklerini de deniyor, ancak bunların kodu yavaşlattığını görüyor.
  • Benchmark kurulumu AMD Ryzen 5 5625U CPU ile Clang ve GCC'nin en güncel sürümlerini içeriyor.
  • Sonuç olarak, assembly düzeyinde elle yapılan çalışma ve optimizasyonun belirli durumlarda önemli hız artışları sağlayabileceği belirtiliyor.

1 yorum

 
GN⁺ 2023-07-07
Hacker News yorumu
  • Orijinal kod, switch ifadesi yerine if ifadeleri kullanılarak optimize edilebilir.
  • Kodun diğer optimize edilmiş sürümleri, dallanmasız sete/cmov komutlarını kullanır ve optimize edilmiş assembly koduyla aynı hıza ulaşabilir.
  • Vektörleştirilmiş kod sürümü, mümkünse AVX-512 komutlarını kullanarak daha da hızlı olabilir.
  • Diğer işlemcilerde, dallanmaya bağlı olarak performans özellikleri farklı olabilir.
  • C dili başlangıçta sistem seviyesindeki kodun platformlar arasında kolayca taşınabilmesi için tasarlandı ve bunun için bazı özelliklerden feragat etti.