Advent of Compiler Optimisations 2025
(xania.org)- 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
- Semua posting dapat diikuti melalui tag AoCO2025 di blog
- Video dapat ditonton melalui kanal YouTube atau playlist khusus
- Tautan YouTube:
https://www.youtube.com/mattgodbolt - Tautan playlist:
https://youtube.com/playlist?list=PL2HVqYf7If8cY4wLk7JUQ2f0JXY_xMQm2
- Tautan YouTube:
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
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
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
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
Saya sedang menonton Advent of Computer Science Advent Calendars, Day 2
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
Referensi: Wiki 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
Dalam kebanyakan kasus,
-O2sudah cukup. Setiap kali kompiler diperbarui, optimisasi internalnya ikut membaik, jadi developer jarang perlu menyetel detail kecil secara manualSelain 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 2Konten 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