1 poin oleh GN⁺ 2025-12-03 | 1 komentar | Bagikan ke WhatsApp
  • Proyek kalender advent selama 25 hari dengan tema optimisasi kompiler C/C++
  • Dari 1 hingga 25 Desember, setiap hari memperkenalkan satu contoh optimisasi melalui artikel blog dan video
  • Setiap posting membahas secara spesifik kapan diterapkan, interpretasi assembly, dan situasi saat tidak diterapkan
  • Berfokus pada x86-64, tetapi juga mencakup sebagian arsitektur ARM 64-bit dan 32-bit
  • Seri yang sangat bernilai edukatif bagi pengembang yang ingin mempelajari cara kerja kompiler

Gambaran umum proyek Advent of Compiler Optimisations 2025

  • Proyek yang dipersiapkan selama sekitar satu tahun ini akan merilis contoh optimisasi kompiler baru setiap hari sepanjang bulan Desember
    • Dari 1 hingga 25 Desember, satu artikel blog dan satu video dipublikasikan setiap hari
    • Setiap konten membahas optimisasi menarik yang dilakukan kompiler berdasarkan kode C atau C++
  • Setiap optimisasi dijelaskan secara rinci hingga syarat penerapan, interpretasi kode assembly, dan kasus saat optimisasi tidak diterapkan
    • Bukan sekadar perbandingan kode sederhana, melainkan analisis terhadap cara kerja kompiler yang sebenarnya

Cakupan teknologi yang dibahas

  • Mencakup spektrum luas, mulai dari trik spesifik arsitektur tingkat rendah hingga teknik optimisasi tingkat tinggi
    • Fokus utamanya pada x86-64, tetapi juga mencakup sebagian topik terkait ARM 64-bit dan 32-bit
  • Disusun sebagai materi praktis untuk mempelajari cara kerja internal kompiler dan proses pembangkitan kode

Cara mengikuti dan menonton

Makna proyek

  • Sebuah proyek pribadi berskala besar yang diselesaikan setelah sekitar satu tahun persiapan, dengan tujuan mengeksplorasi kecanggihan dan efisiensi kompiler
  • Upaya edukatif untuk membantu pengembang memahami cara kerja nyata optimisasi kompiler, dan memanfaatkannya saat menulis kode
  • Penulis ingin berbagi “kegembiraan mempelajari betapa menakjubkannya kompiler”

Tentang Matt Godbolt

  • Pengembang C++ yang tinggal di Chicago dan bekerja di Hudson River Trading
  • Salah satu pembawa acara podcast Two’s Complement
  • Aktif di Mastodon dan Bluesky
  • Konten blog didistribusikan dengan lisensi Creative Commons BY-NC 3.0 Unported

1 komentar

 
GN⁺ 2025-12-03
Opini Hacker News
  • Setelah melihat optimisasi kompiler dari Matt, ada baiknya juga membaca wawancara yang pernah saya lakukan dengannya
    Ini yang kemudian saya yakini: bekerjalah pada level abstraksi yang paling nyaman bagi Anda, tetapi tetap pahami juga lapisan di bawahnya
    Misalnya, jika Anda seorang programmer C, Anda perlu tahu bagaimana runtime C berinteraksi dengan sistem operasi. Tidak harus memahami semua detailnya, tetapi setidaknya cukup untuk tahu harus mulai melihat dari mana saat ada masalah
    Artikel ACM Queue yang ditulis Matt juga, meski sudah lama, merupakan pengantar yang sangat bagus untuk memahami konsep optimisasi semacam ini

    • Saya pernah mendengar profesor saya di masa kuliah mengatakan, “pahamilah lapisan yang tepat berada di bawah lapisan tempat Anda bekerja.” Itu sangat membantu karier saya
      Misalnya, saat bekerja dengan Java, memahami JVM membuat saya bisa mengoptimalkan performa perangkat lunak medis jauh lebih baik. Dan selain itu, memahami lapisan di bawahnya memang menyenangkan
    • Terima kasih Adam 😊
  • Meskipun dia jelas merupakan ahli domain, saya terkesan karena dia tidak langsung terjun ke set instruksi x86 yang rumit dari awal, melainkan menjelaskannya pelan-pelan mulai dari dasar

  • Matt Godbolt adalah benar-benar permata bagi komunitas C dan C++
    Berkat Compiler Explorer dan kontribusinya, saya rasa dunia banyak developer menjadi lebih baik

    • Apa?! Godbolt itu orang sungguhan!?
  • Saya sedang menonton Advent of Computer Science Advent Calendars, Day 2

    • Sepertinya saya akhirnya sampai di titik itu
  • Saya sangat tertarik dengan teknik code amalgamation yang digunakan SQLite
    Menurut tim SQLite, cara ini saja bisa memberi peningkatan performa 5–10%. Saya harap Matt membahas topik ini di salah satu sesinya

    • Ini topik yang cukup umum, dan sebenarnya lebih merupakan gaya build yang disebut “unity build” daripada optimisasi kompiler
      Referensi: Wiki Unity build
    • Belakangan ini LTO (Link Time Optimization) lebih sering digunakan daripada unity build
      Meski begitu, LTO bisa lambat untuk build non-inkremental, jadi untuk build sekali jalan, unity build masih tetap berguna
  • Saya sudah 25 tahun mengembangkan perangkat lunak, tetapi saya masih bertanya-tanya apakah saya menggunakan flag kompiler yang optimal

    • Menurut pengalaman saya, semakin sedikit flag semakin baik
      Dalam kebanyakan kasus, -O2 sudah cukup. Setiap kali kompiler diperbarui, optimisasi internalnya ikut membaik, jadi developer jarang perlu menyetel detail kecil secara manual
      Selain itu, menambahkan flag berdasarkan benchmark yang keliru itu berbahaya. Perbedaan performa 1–2% tergantung keadaan sistem adalah hal yang umum
      Jika struktur kode berubah, cache-friendliness juga bisa berubah dan memengaruhi performa. Artinya, bisa jadi bukan karena flag, melainkan karena penempatan kode
  • Saya menantikan post-post berikutnya. Pagi ini saya baru saja mengajarkan SBCL untuk mengoptimalkan pola (+ base (* index scale)) dan (+ base (ash index n)) menjadi satu instruksi LEA. Jadi saya langsung mempraktikkan apa yang dipelajari di Day 2

  • Konten Godbolt itu tidak pernah terasa cukup

  • Saya berharap ada pembahasan tentang operasi pembagian dengan konstanta bilangan bulat. Bab terkait di Hacker’s Delight benar-benar luar biasa, tetapi terasa agak sulit bagi pembaca umum

  • Ini seperti Advent of Code untuk para nerd kompiler
    Saya sangat suka format pelajaran optimisasi harian yang singkat untuk membangun intuisi
    Jika memahami apa yang dilakukan kompiler, dan mengapa, Anda bisa menjadi programmer yang lebih baik apa pun bahasa yang Anda gunakan