Kodun Profilini Çıkarmak

Programınızı hızlandırmanın ilk adımı dar boğazların nerede olduğunu tespit etmektir. Bu, hiç çalışmayan bir kodu eniyileştirmede veya zaten hızlı çalışan bir kod için pek bir önem teşkil etmez. Kod içerisindeki önemli noktaları bulmada, onları takip etmede ve profil oluşturmada iki modül kullanacağım. Sonraki örneklerde Python 2.3 sürümüyle gelen timeit modülünü de kullanacağım.

Modülün Profilini Çıkarmak

profil modülü Python dağıtımı içerisinde standart bir modül olarak bulunmaktadır. Bir fonksiyon kümesinin çalışmasının profilini oluşturmak için kullanımı oldukça basittir. Diyelim ki ana fonksiyonunuzun ismi main ve parametre almamaktadır, siz de profil modülü altında bunu çalıştırmak istemektesiniz. En basit hali ile şunu çalıştırırsınız.

			import profile
			profile.run('main()')
		

main() fonksiyonu sonlandığı zaman profil modülü fonksiyonların çağrımlarını ve çalışma zamanlarını gösteren bir tabloyu ekrana basacaktır. Modül içerisindeki Stats sınıfı kullanılarak çıktı değiştirilebilir. Python sürüm 2.4'te yerleşik elemanların ve profili çıkarılacak uzatılmış fonksiyonların çalışma zamanları da gösterilir.

Hotspot Modülü

Python 2.2 sürümüyle gelen hotspot modülü profil modülünün bir eşdeğeri olarak tasarlanmıştır. C ile yazıldığından daha az bir performance harcaması yapar ve bu da uygulamanızın performansı hakkında daha doğru bilgi edinmenizi sağlar. Ayrıca Tools/scripts altında hotshotmain.py programı konsoldan programınızı çalıştırarak hotspot kontrolünde test etmenizi sağlar.

Trace Modülü

Trace modülü henüz ele alınmamış seviye testlerini gerçeklemek için yazdığım bir profile modül türevidir. İlk sürümünü yayınladığımdan beri pek çok kişi tarafından oldukça farklı değişikliklere uğramıştır. Python 2.0 sürümünde Tools/scripts altında trace.py dosyasını bulacaksınız. Sürüm 2.3'ten itibaren standart kütüphanenin içinde yer almıştır. bin dizinine kopyalayıp çalışma izinlerini vererek doğrudan çalıştırabilirsiniz. Tüm betiği konsoldan çalıştırmak daha kolaydır:

			% trace.py -t spam.py eggs
		

Python 2.4 sürümünde daha da basit bir hal almıştır, sadece python -m trace yazmak yeterlidir.

Ayrı bir belgelendirmesi olmamakla beraber "pydoc trace" diyerek satıriçi belgelendirmesini görebilirsiniz.