Kod Sözdizimi

Derleyici Rahat Bırakın!

Yada diğer bir deyişle, bırakın derleyici işini yapsın!

Bölümü bu şekilde özetleyebiliriz.

Yıllar yıllar önce, kod optimizasyonları için derleyiciye yardımcı olmak iyi bir pratikti ve bu şekilde hatırı sayılır performans artışları elde edilebiliyordu.

Günümüzde ise başta gcc ve clang ailesi olmak üzere C ve C++ derleyicileri bambaşka bir seviyeye gelmiş durumdalar. Onlardan daha iyi optimizasyonlar yapabileceğinizi düşünüyorsanız, büyük bir yanılgı içinde olduğunuzu rahatlıkla söyleyebiliriz. İddialı bir söylem olabilir belki ama, derleyiciden daha iyi optimizasyonlar yapabilecek programcı sayısı ülkemizde en fazla bir kaç tanedir. Onlar da çok spesifik senaryolar için belirli mimarilerde ve gerçekten önemli fayda sağlayacak durumlarda buna başvurmayı deneyeceklerdir.

Konuyla ilgili yeri gelmişken Alper Akcan'ı analım. Geçenlerde çok uzun olmayan bir kod bloğunu, olabilecek en doğru ve en kısa assembly kodu ile yazmış olmasına rağmen, gcc'nin ürettiği kodun hızına yetişemediğinden yakınıyordu :)

Günümüzdeki modern işlemci mimarileri, out-of-order-execution, speculative-branch-prediction, memory-dependence-prediction vb. gibi pek çok kompleks optimizasyon imkanları sunmaktadırlar. Siz kodu doğal akışıyla optimize etmeye çalışıyorken, işlemcide olayların kaynak koddaki sıra ile gideceğinin garantisi bulunmamaktadır. Bu gibi senaryoların çokluğu, derleyici optimizasyonu işini kaynak kod seviyesinden artık çıkarmıştır.

Derleyici için optimize kod yazmak yerine, okunabilir kod yazmaya özen gösterin.

Derleyici optimizasyonları ile verimsiz yazılmış kodların birbirine karıştırılmaması gerektiğini hatırlatırız.