Her yıl, Python'ın C'den kat kat yavaş olduğunu gösteren karşılaştırmalı testler ortaya çıkar ve bu durum, "gerçek uygulamalar I/O bağımlıdır" diyenlerle "gerçek bir dil kullanın" diyenler arasında bir tartışmaya yol açar. Ancak yazar, her iki tarafın da yanıldığını belirtiyor. Bu makale, Python'ı hızlandırmak için kullanılabilecek farklı optimizasyon araçlarını ve yöntemlerini, gerçek dünya senaryolarına yakın bir JSON olay işlem hattı da dahil olmak üzere, popüler Benchmarks Game problemlerini (n-body ve spectral-norm) kullanarak karşılaştırmalı olarak inceliyor. Amaç, her bir çözümün maliyetini ve sağladığı performansı "optimizasyon merdiveni" olarak sunmaktır.
Python'ın yavaş olmasının temel nedenleri genellikle GIL, yorumlama ve dinamik tipleme olarak gösterilse de, asıl sebep dilin aşırı dinamik olacak şekilde tasarlanmış olmasıdır. Çalışma zamanında metotları değiştirebilme, yerleşik fonksiyonları değiştirebilme veya bir sınıfın kalıtım zincirini örnekler mevcutken bile değiştirebilme gibi özellikler, Python'ı optimize etmeyi temelden zorlaştırır. Örneğin, C'de bir tam sayı 4 bayt yer kaplarken, Python'da referans sayacı, tip nesnesi işaretçisi ve diğer dinamizm destekleyici mekanizmalar nedeniyle en az 28 bayt yer kaplar. Bu nesne yükü, a + b gibi basit bir işlemde bile, iki heap işaretçisini çözümleme, tip yuvalarını arama ve yeni bir PyObject tahsis etme gibi ek adımlar gerektirir. CPython 3.11+ gibi sürümlerde adaptif uzmanlaşma gibi iyileştirmeler olsa da, genel durumda bu ek yük devam eder. Milyonlarca işlem döngü içinde yapıldığında bu durum performansı önemli ölçüde etkiler.
Python'ın performans darboğazlarını anlamak ve doğru optimizasyon stratejilerini uygulamak, geliştiricilerin hem verimli hem de hızlı uygulamalar oluşturmasını sağlar.