Tag

c++

Browsing

C++ Derleyicilerinde Optimizasyon: 2 – Compile Flag’leri Derlenebilen dillerin bir çoğunda derleme zamanı problemleri yaşanmaktadır. C++ özellinde incelediğimiz zaman, proje büyüdükçe derleme zamanı geliştiriciler için çok büyük zaman kayıplarına yol açmaktadır. Hatta sadece compile-time’ı düşürmek için çalışan şirketler mevcuttur. Özellikle oyun endüstrisinde ortaya çıkan ürünlerin büyüklükleri yüzünde bu işlem oldukça vakit alır. Increbuild gibi şirketler bu işlemleri daha hızlı hale getirecek teknolojiler geliştirmektedir. Ben ise bu yazıda GCC üzerindeki optimizasyon flag’lerinden bahsetmeye çalışacağım. Optimizasyon işlemi için compiler’lar kendi içlerinde flag’ler barındırır. Bu flag’ler ile çeşitli seviyelerde optimizasyon işlemi gerçekleştirmeniz mümkündür. GCC üzerinde optimizasyon işlemleri “-O” flag’i ile gösterilir ve optimizasyon seviyesine göre yanına farklı parametreler alır. -O ile başlayan optimizasyon işlemleri aslında -f ile başlayan ve spesifik olarak kontrol edilecebilecek…

Derleyiciler, yazdığımız yüksek seviyeli kodları bilgisayarların veya mikroişlemcilerin rahatça çalıştırabilmesi için makine kodlarına dönüştürmeye yarayan, bu dönüşüm işlemi esnasında da çeşitli optimizasyon işlemleri sayesinde sistemden maksimum verim elde etmeyi amaçlayan araçlardır. Arkaplanda çalışan sistemleri karışık olduğu için genelde es geçilir ancak derleyicilerin bize sağladığı optimizasyon seviyeleri kadar bizim de yapmamız gereken bazı optimizasyon işlemleri vardır. Bu yazı serisinde derleyicinin otomatik olarak yaptığı optimizasyonlardan ve geliştiricinin yapabileceği optimizasyonlardan bahsediyor olacağım. Geliştirici gözüyle bakıldığı zaman derleyiciler tüm işlemleri otomatik olarak yapıyor olarak görünür. Örneğin; GCC derleyicisinde derleme işlemi sırasında kullanabileceğiniz optimizasyon flag’leri (bazı kelimelerin direkt Türkçe çevirisinin anlamlı olmayacağını düşündüğüm için İngilizce karşılığını kullanmayı tercih ediyorum.) vardır. Onlar sayesinde kodunuzu hangi seviyede optimize etmek istediğinizi ayarlayabilirsiniz. Her zaman maksimum optimizasyon flag’ini kullanmak…

Yazdığımız kodlar içerisinde birçok uyarı ve hata ile (“warning” ve “error”) karşılaşırız. Kullandığımız derleyiciler bu uyarı ve hataları derleme sırasında bizim için ortaya çıkartır ve buna bağlı olarak düzeltilmesi gereken yerlerde bu düzenlemeleri yaparız. Birçok derleyici bunu kendi içerisinde yaparken harici olarak yapılma ihtiyacı olan durumlar da olmaktatır. Bu işleme statik analiz adı verilir. Statik analiz işlemini gerçekleştirmek için de birçok araç mevcuttur. Bu yazımda CppCheck aracı ile nasıl statik analiz yapabileceğimiz hakkında bilgi vermeye çalışacağım. Statik Analiz Statik analiz, kodu derlemeden (yani pre-compile) tespit edilebilecek hataları tespit ederek bunları düzeltmemize olanak tanır. Bu sayede oluşabilecek bug’ları erken dönemde tespit etmeye ve tanımlanmamış davranışları ve tehlikeli kod yapılarını (undefined behaviour ve dangerouscoding constructs) tespit etmeye odaklanır. Aşağıda kullanabileceğiniz bazı statik…