· kaynak Hacker News – Front Page (native)
Python 3.15 kıyaslaması: standart derleme hafif öne geçiyor, deneysel JIT açık ara önde
Miguel Grinberg'ın gayriresmî Python 3.15.0rc3 kıyaslaması, standart yorumlayıcının 3.14'ten yalnızca marjinal biçimde hızlı olduğunu, deneysel JIT derlemesinin ise onu 1.2x ila 1.3x oranında geçtiğini gösteriyor.

Miguel Grinberg, her yıl yaptığı gayriresmî Python kıyaslamasının en yeni sürümünü yayımladı ve yazı Ekim başında Hacker News'in ana sayfasına yerleşti. Bu koşu, Python 3.15.0rc3 sürüm adayını — yazının kaleme alındığı sırada nihai 3.15 sürümüne henüz birkaç gün vardı — 3.10'a kadar tüm CPython sürümleriyle, ayrıca PyPy, Node.js ve Rust ile karşılaştırıyor. Kısa versiyon: standart 3.15 yalnızca 3.14'ten biraz daha hızlı, ancak deneysel just-in-time derleme sürümü, bu kıyaslamasının tarihinde ilk kez standart yorumlayıcıyı her iki testte de geride bıraktı.
Neler ölçüldü
Kıyaslama iki küçük program kullanıyor. İlki olan fibo.py, özyineleme kullanarak ilk 40 Fibonacci sayısını hesaplıyor; Grinberg bunun CPython'da tarihsel olarak görece verimsiz olduğunu belirtiyor. İkincisi olan bubble.py, düz for döngüleriyle bubble sort kullanarak rastgele üretilmiş 10.000 sayıyı sıralıyor. G/Ç bağımlı kod bilerek dışarıda bırakılmış ve Grinberg bu çalışmanın gayriresmî olduğunu vurguluyor: amacı sürümden sürüme değişimi hissettirmek, yorumlayıcının kapsamlı bir performans profilini sunmak değil.
Her yapılandırma, Intel Core i5 işlemcili bir Gentoo Linux dizüstü bilgisayarda üç kez çalıştırılıp ortalaması alındı. Geçen iki koşuda işletim sistemleri arasında anlamlı bir fark görülmediğinden bu yıl matristen macOS çıkarıldı. CPython 3.10'dan 3.15'e kadar olan sürümlerin yanı sıra testler, ilk kez 3.13 ile gelen JIT ve free-threading yorumlayıcı varyantlarını, PyPy 3.12, Node.js 26.3 ve Rust 1.97'yi kapsıyor; her biri tek iş parçacıklı ve dört iş parçacıklı biçimde test edildi. Aşağıdaki rakamlar, yazıda bildirilen tek iş parçacıklı sonuçlardır.
Standart yorumlayıcının kazanımları mütevazı
Fibonacci testinde 3.15, 3.14'ün 7.17 saniyesine karşılık 6.94 saniyede tamamlandı; Grinberg'in pratikte önemli saymadığı 1.03x'lik bir fark. Daha uzun vadeli görünüm daha ilginç: 3.10'un 15.94 saniyeye ihtiyacı vardı, yani standart yorumlayıcı bu iş yükünde beş sürüm önceye kıyasla kabaca 2.3x daha hızlı.
Bubble sort testi de benzer bir tablo çiziyor. 3.15 testi 3.14'ün 2.06 saniyesine karşılık 1.97 saniyede tamamladı; bu 1.04x'lik bir kazanç ve 3.10'un 3.99 saniyesine göre yaklaşık 2x daha hızlı. İlerleme burada kesin olarak doğrusal değil: 3.12 ve 3.13, bu testte 3.11'den birer miktar yavaştı. Her iki programda da Grinberg, önemli sıçramalar yaşatan tek son sürümlerin 3.11 ve 3.14 olduğunu, diğerlerinin küçük iyileştirmeler getirdiğini ya da aynı seviyede kaldığını belirtiyor.
JIT derlemesi öne geçiyor
Bu yılki koşunun öne çıkan sonucu JIT. Fibonacci testinde 3.15'in JIT derlemesi 5.76 saniyede tamamlandı — standart 3.15 yorumlayıcısından 1.20x, 3.14 JIT'ten 1.24x daha hızlı. Bubble sort'ta 1.54 saniye sürdü; standart 3.15'ten 1.28x ve 3.14 JIT'ten 1.53x daha hızlı. Kıyaslamanın önceki sayılarında JIT hiçbir zaman standart yorumlayıcıyı geçememişti; dolayısıyla bu öne geçiş, Grinberg'in en heyecan verici bulgu olarak öne çıkardığı değişiklik.
Free-threading seviyesini koruyor
Free-threading özellikli 3.15 derlemesi Fibonacci testini 7.03 saniyede tamamladı; hem 3.14 free-threading derlemesiyle hem de standart yorumlayıcıyla fiilen aynı. Bubble sort'ta 2.68 saniye sürdü; standart 3.15'in hızının yaklaşık 0.74x'i — bir gerileme, ama 3.14'ün free-threading derlemesi de benzer bir fark göstermişti, yani bu yeni bir regresyon değil. Ayrıca bildirilen her iki test de tek iş parçacıklı olduğundan, free-threading'in var olma nedeni olan paralellik zaten burada devreye girmiyor.
PyPy, Node ve Rust ile karşılaştırma
CPython dışı bağlam için: PyPy 3.12 Fibonacci testini 1.25 saniyede, yani 3.15'ten 5.54x daha hızlı tamamladı; bubble sort'u ise 0.11 saniyede, 18.37x daha hızlı bitirdi. Node.js 26.3 Fibonacci'de 1.39 saniye (4.99x), bubble sort'ta 0.064 saniye (30.66x) sürdü; yani özyinelemeli testte PyPy Node'u kıl payı geçerken, döngü ağırlıklı testte Node öndeydi. Rust 1.97 ise sırasıyla 0.09 ve 0.039 saniyede tamamlandı; 3.15'ten 77.24x ve 50.42x daha hızlı.
Neden önemli
Halihazırda 3.14 kullanan ekipler için ham hız, 3.15'e geçişi acele ettirmek için ikna edici bir neden değil — standart yorumlayıcının bu döngüdeki kazanımları marjinal. Daha önemli sinyal JIT'in öne geçişi: alternatif bir derlemenin her iki testte de standart yorumlayıcıyı istikrarlı biçimde geçmesi, JIT çabasının merak uyandıran bir denemeden, CPU bağımlı Python servisleri için denenmeye değer bir şeye doğru olgunlaştığına işaret ediyor; yine de ayrı bir derleme olmaya devam ediyor ve bu sonuçlar G/Ç ağırlıklı gerçek dünya kodu hakkında hiçbir şey söylemiyor. 3.10'dan bu yana birikimli tablo — her iki testte kabaca 2x veya daha iyi — yorumlayıcı sürümlerini güncel tutmanın en güçlü gerekçesi olmayı sürdürüyor. Grinberg'in kendisinin de uyardığı gibi, iki yapay program yön gösteren bir göstergedir, bir profil değil; performansa duyarlı iş yükleri olan herkes kendi kodunu ölçmeli.
- #python
- #performance
- #benchmarking
- #jit
- #cpython