Beni Why does Python code run faster in a function? sorusuna yönlendiren bir yorum gördüm. 10**8
şeyler biraz daha hızlı hale getirmek için 10**7
değiştirildi:Python kodunun bir işlevde daha hızlı çalıştığı GERÇEKTEN doğru mu?
(not:
ancak ben çok farklı sonuçlar var, düşünce var ve ben timeit
kitaplığı kullanarak kendim denemek düşündüm zaman)
>>> from timeit import repeat
>>> setup = """
def main():
for i in xrange(10**7):
pass
"""
>>> stmt = """
for i in xrange(10**7):
pass
"""
>>> min(repeat('main()', setup, repeat=7, number=10))
1.4399558753975725
>>> min(repeat(stmt, repeat=7, number=10))
1.4410973942722194
>>> 1.4410973942722194/1.4399558753975725
1.9
- doğru
timeit
kullandınız mı? - Niçin bu sonuçlar birbirinden% 0.1 daha az farklıdır, diğer soruların sonuçları ise yaklaşık% 250 farklıdır?
- Python'un (Cython gibi) derlenmiş sürümleri
CPythonkullanırken fark yaratır mı? - Sonuçta: bir işlevde Python kodu gerçekten daha hızlı mı, yoksa sadece nasıl çalıştığınıza bağlı mı? Derleyici optimizasyon algoritmalarına gelir.
I (böylece sürümü ve dağıtımı hem (yani normal bu uygulamaya büyük ölçüde bağlıdır düşünüyorum Python vs CPython vb) önemlidir. Ayrıca, sadece doğru bir karşılaştırma için aynı kodu diğer sorudaki gibi (ve aynı şekilde zamanlama) çalıştırmayı denemelisiniz. – Cornstalks
[Bu gönderi] (http://stackoverflow.com/a/11241708/1961486) anlayışlı. – Octipi
Yani, Python'un derlenmiş sürümlerinde (CPython, PyPy, vb.) Önemli gibi görünüyor, ama sade eski vanilyalı Python'da bir fark yaratmıyor! –