1 puan yazan GN⁺ 2025-12-03 | 1 yorum | WhatsApp'ta paylaş
  • C/C++ derleyici optimizasyonu temalı, 25 gün süren bir Advent takvim projesi
  • 1 Aralık ile 25 Aralık arasında her gün bir blog yazısı ve video ile bir optimizasyon örneği sunuluyor
  • Her yayın, uygulanma zamanı, assembly analizi ve uygulanmadığı durumlar gibi başlıkları ayrıntılı biçimde ele alıyor
  • Odak noktası x86-64 olsa da 64-bit ve 32-bit ARM mimarisi de kısmen yer alıyor
  • Derleyicinin nasıl çalıştığını öğrenmek isteyen geliştiriciler için yüksek eğitsel değere sahip bir seri

Advent of Compiler Optimisations 2025 Proje Genel Bakışı

  • Yaklaşık bir yıl hazırlanmış bu projeyle, Aralık ayında her gün yeni bir derleyici optimizasyonu örneği yayınlanıyor
    • 1 Aralık ile 25 Aralık tarihleri arasında her gün birer kez blog yazısı ve video paylaşılacak
    • Her içerikte C veya C++ kodu temel alınarak derleyicinin yaptığı ilginç optimizasyonlar inceleniyor
  • Her optimizasyon, uygulama koşulları, assembly kodu yorumlama ve uygulanmadığı durumlar dahil olmak üzere detaylı şekilde açıklanır
    • Bu, yalnızca basit kod karşılaştırması değil, gerçek derleyici davranışının analizi şeklinde bir yaklaşım sunar

Kapsanan Teknoloji Alanı

  • Düşük seviye mimariye göre hilelerden yüksek seviye optimizasyon tekniklerine kadar geniş bir yelpazeyi kapsar
    • Ağırlıkla x86-64 ele alınmakla birlikte 64-bit ve 32-bit ARM ile ilgili içerik de kısmen bulunur
  • Derleyicinin iç işleyişi ve kod üretim sürecini öğrenebileceğiniz pratik bir kaynak olarak hazırlanmıştır

Katılım ve İzleme

Projenin Önemi

  • Yaklaşık bir yıl süren hazırlığın ardından tamamlanan büyük ölçekte bir kişisel proje olarak, derleyicinin hassasiyeti ve verimliliğini incelemek amacını taşıyor
  • Geliştiricilerin derleyici optimizasyonunun gerçek çalışma prensiplerini anlamasına ve bunu kod yazarken kullanabilmesine yardımcı olmayı hedefleyen eğitim odaklı bir girişim
  • Yazar, “derleyicinin ne kadar şaşırtıcı olduğunu öğrenmenin keyfini” paylaşmak istiyor

Matt Godbolt Hakkında

  • Chicago'da yaşayan bir C++ geliştiricisi olarak Hudson River Trading'de çalışıyor
  • Two’s Complement podcast'inin ortak sunucusu
  • Mastodon ve Bluesky platformlarında aktif
  • Blog içeriği Creative Commons BY-NC 3.0 Unported lisansıyla dağıtılıyor

1 yorum

 
GN⁺ 2025-12-03
Hacker News yorumu
  • Matt’in derleyici optimizasyonlarına bakışını inceledikten sonra, onunla yaptığım röportaja da göz atmanızı öneririm
    Benim benimsediğim fikir şu: rahat ettiğiniz soyutlama seviyesinde çalışın, ama altındaki katmanı da anlayın
    Örneğin bir C programcısıysanız, C çalışma zamanının işletim sistemiyle nasıl etkileşime girdiğini bilmelisiniz. Tüm ayrıntıları bilmeniz gerekmez, ama bir sorun çıktığında nereden bakmaya başlayacağınızı sezebilecek kadar bilmek gerekir
    Matt’in yazdığı ACM Queue makalesi de eski bir yazı olsa da bu tür optimizasyon kavramlarını anlamak için çok iyi bir giriş niteliğinde

    • “Çalıştığın katmanın hemen altını anla” sözünü üniversitede bir hocamdan duymuştum. Kariyerimde bana çok yardımcı oldu
      Mesela Java ile çalışırken JVM’i anlamak, tıbbi yazılımın performansını çok daha iyi optimize etmemi sağladı. Ayrıca sadece o alt katmanı anlamak da eğlenceli
    • Teşekkürler Adam 😊
  • Açıkça bir alan uzmanı olmasına rağmen, doğrudan karmaşık x86 komut setine dalmayıp temel kısımlardan başlayarak adım adım anlatması etkileyici

  • Matt Godbolt, C ve C++ topluluğunun gerçek bir mücevheri
    Compiler Explorer ve katkıları sayesinde pek çok geliştiricinin dünyasının daha iyi bir yer haline geldiğini düşünüyorum

    • Ne?! Godbolt gerçek bir insan mıymış!?
  • Advent of Computer Science Advent Calendars, Day 2 izliyorum

    • Sanırım artık o noktaya geldik
  • SQLite’ın kullandığı kod birleştirme (amalgamation) tekniği ilgimi çok çekiyor
    SQLite ekibine göre sadece bu yöntem bile %5–10 performans artışı sağlıyor. Matt’in oturum sırasında bu konuya da değinmesini isterim

    • Bu oldukça genel bir konu ve aslında derleyici optimizasyonundan ziyade “unity build” denilen bir derleme yaklaşımı
      Referans: Unity build wiki
    • Bugünlerde unity build yerine daha çok LTO(Link Time Optimization) kullanılıyor
      Yine de LTO artımlı olmayan derlemelerde yavaş olabildiği için, tek seferlik derlemelerde unity build hâlâ faydalı olabiliyor
  • 25 yıldır yazılım geliştiriyorum ama hâlâ en iyi derleyici bayraklarını kullanıp kullanmadığımı merak ediyorum

    • Benim deneyimime göre bayraklarda az, çoktur
      Çoğu durumda -O2 yeterlidir. Derleyici güncellendikçe iç optimizasyonlar iyileşir, bu yüzden geliştiricinin elle ince ayar yapması genelde gerekmez
      Ayrıca hatalı bir benchmark temel alınarak bayrak eklemek risklidir. Sistem durumuna göre %1–2 performans farkı görmek olağandır
      Kodun yapısı değiştiğinde önbellek dostu olma durumu da değişebilir ve bu da performansı etkileyebilir. Yani sebep bayraklar değil, kod yerleşimi olabilir
  • Kalan yazıları merakla bekliyorum. Bu sabah SBCL’ye (+ base (* index scale)) ve (+ base (ash index n)) kalıplarını tek bir LEA komutuna optimize etmeyi öğretmeye çalışıyordum. Yani Day 2’de öğrendiklerimi hemen uygulamış oldum

  • Godbolt içeriğinin ne kadarı olsa yetmez

  • Tamsayı sabitleriyle bölme işlemini ele almasını isterdim. Hacker’s Delight içindeki ilgili bölüm gerçekten harika ama genel okur için biraz zor gelebiliyor

  • Bu, derleyici meraklıları için bir Advent of Code gibi
    Her gün lokmalık bir optimizasyon dersiyle sezgi geliştirme formatını çok seviyorum
    Derleyicinin ne yaptığını ve neden yaptığını anlamak, hangi dili kullanırsanız kullanın sizi daha iyi bir programcı yapar