Program optimizasyonu, bir bilgisayar programını, programın daha hızlı çalışmasına, daha az kaynak tüketmesine veya genellikle daha yüksek bir verimlilik seviyesinde çalışmasına neden olacak şekilde değiştirme işlemidir. Optimizasyon görevi, bazı programlama dili derleyicileri tarafından kasıtlı olarak bir optimizasyon programı kullanılarak veya kaynak kodda ilerleyen ve belirli iyileştirmeler yapmaya çalışan programcılar tarafından otomatik olarak gerçekleştirilebilir. Genel olarak, program optimizasyonu belirli bir amaç göz önünde bulundurularak gerçekleştirilir, çünkü bir programda programın başka bir bölümünün optimize edilmiş durumunu azaltmayan bir program için yapılabilecek çok az genel optimizasyon vardır, yani bir program genellikle hız veya kaynak kullanımı için optimize edilmiş, ancak genellikle her ikisi de değil. Bazı optimizasyon türlerinde ortaya çıkabilecek bir komplikasyon, birçok yüksek seviye programlama dilinin yerel kod ile bilgisayar dili arasında bu kadar büyük bir soyutlama seviyesi sağlamasıdır. tam zamanında (JIT) derleme kullanan yorumlanmış diller.
Program optimizasyonunda önemli bir kavram, bir optimizasyonun genellikle bir çeşit fiyatla geldiği fikridir. Buna bir örnek, bir kod parçası daha hızlı çalışacak şekilde optimize edildiğinde, hızdaki artışın kod okunabilirliği, bellek kullanımı, program esnekliği veya başka bir takım maliyetlerin fiyatından kaynaklanabileceğidir. Bu, program optimizasyonunun, bir programın bir yönünün daha iyi bir şekilde çalışmasını sağlamak amacıyla diğer yönlerin verimliliğini feda etmeye istekli olmak amacıyla hedeflenmiş bir süreç olması gerektiği anlamına gelir.
Program geliştirmenin farklı aşamalarında farklı türlerde program optimizasyonu yapılabilir. Tasarım sırasında, bir programın etkili bir şekilde çalışması için görünmesini sağlayarak geniş optimizasyon yapılabilir. Gerçek kaynak koduyla çalışırken, optimizasyonlar yabancı komutlar, tekrarlayan çağrılar veya kötü yazılmış işlevler olmamasını sağlayabilir. Derleme işleminde derleyici tarafından birçok optimizasyon otomatik olarak gerçekleştirilir ve programlayıcı tarafından farklı derleyici anahtarları veya yönergeleri kullanılarak yönlendirilebilir.
Bir derleyici veya tahsisat optimizasyon programında meydana gelebilecek olan otomatik optimizasyonlar, genellikle insan programcıları için pratik olamayacak kadar karmaşık hileler içerebilir. Bu, bir programdaki hareket talimatlarını içerebilir, böylece başlangıçta yazılan sıranın dışında ancak işlemci için daha verimli bir şekilde yürütülürler. Ayrıca, bellek blokları gibi kaynakları bilerek değiştirmeyi içerebilir, böylece daha hızlı erişilebilirler. Program optimizasyonunun çoğu derleyici seviyesinde otomatik olarak gerçekleşir.
Tekrarlanan veya agresif program optimizasyonuyla ilgili bir komplikasyon, bir program daha verimli çalışacak şekilde değiştirildikten sonra, işlevsellik eklemek veya hataları düzeltmek gibi başka amaçlar için değişiklik yapmak genellikle daha zor hale gelir. Bu, tüm optimizasyonların geri alınmasını gerektirmeden, optimizasyonların kolayca değiştirilemeyen veya yeni koda adapte edilen program davranışlarını kilitlemeye başladığında ortaya çıkabilir. Daha büyük bir sorun, çoğu durumda, optimize edilmiş bir programın daha az insan tarafından okunabilir hale gelmesidir, çünkü sadece kısa komutlar ve klasik kontrol yapıları yerine hileler ve kısayollar kullanılır. Bu nedenlerden dolayı, şiddetli kod değişiklikleri bir programın biraz daha verimli çalışmasını sağlasa da, genellikle durmanın kabul edilebilir olduğu bir program optimizasyonu düzeyi vardır.


