পাইথন কোডের এক্সিকিউশন টাইম মাপার অনেক পদ্ধতি রয়েছে। একটি পদ্ধতি হলো পাইথনের বিল্ট-ইন time মডিউল ব্যবহার করে প্রোগ্রামের আগে এবং পরের টাইম সেভ করা। কিন্তু time মডিউল ব্যাকগ্রাউন্ড প্রসেসের টাইম কাউন্ট করে না। সুনির্দিষ্ট পারফরম্যান্স মেজারমেন্টের জন্য timeit মডিউল সেরা।
timeit মডিউল কোডটি প্রায় ১ মিলিয়ান বার (ডিফল্ট) রান করে এবং সেইমধ্যে ন্যূনতম টাইম নেয়।
timeit ব্যবহার করে এক্সিকিউশন টাইম বের করা
timeit মডিউলকে বিভিন্নভাবে ব্যবহার করা যায়। সবচেয়ে সহজ পদ্ধতি হলো পাইথন CLI-তে সরাসরি ব্যবহার করা।
উদাহরণ ১: কমান্ড লাইন থেকে
C:\Users\rajesh>python -m timeit "'-'.join(str(n) for n in range(200))" 1000 loops, best of 3: 290 usec per loop C:\Users\rajesh>python -m timeit "'-'.join(str(n) for n in range(200))" 1000 loops, best of 3: 292 usec per loop
উদাহরণ ২: স্ক্রিপ্টে timeit ব্যবহার
প্রথমে import timeit লিখে মডিউল ইম্পোর্ট করতে হয়।
import timeit
# টাইম করা স্টেটমেন্টগুলো
print('x' * 5)
print('x' + 'x' + 'x' + 'x' + 'x')
# timeit.timeit-এ স্টেটমেন্ট পাস করুন এবং ইটারেশন সংখ্যা নির্দিষ্ট করুন
print(timeit.timeit("y = 'x' * 3", number=10000000))
print(timeit.timeit("xy = 'x' + 'x' + 'x' + 'x' + 'x'", number=10000000))
আউটপুট (প্রথম রান)
xxxxx xxxxx 0.9041136896626635 0.7712796073957123
বহুবার রান করলে সময় কমে যাওয়া দেখা যায় (ক্যাশিংয়ের কারণে):
xxxxx xxxxx 0.7317015874427751 0.7312688195585995
timeit.repeat() দিয়ে অটোমেটিক রিপিট
import timeit
print(timeit.repeat("y = 'x' * 3", number=10000000, repeat=5))
print()
print(timeit.repeat("xy = 'x' + 'x' + 'x' + 'x' + 'x'", number=10000000, repeat=5))
আউটপুট
[0.7303736343436382, 0.7213687552991258, 0.7362311105941466, 0.7293136666273243, 0.7278277732068212] [0.7388334197158559, 0.7378481457977326, 0.9486733868277772, 0.735295442480929, 0.7398226849056382]
মাল্টিপল স্টেটমেন্ট টাইম করা
স্টেটমেন্টগুলো সেমিকোলন দিয়ে সেপারেট করুন।
import timeit
print(timeit.repeat("x = 2; x *= 2", number=100000000))
print(timeit.repeat("x = 1; x *= 4", number=100000000))
আউটপুট
[24.859605879029118, 23.58795536845994, 23.95826726353284] [22.70639977603264, 21.380195994245724, 20.71523588130414]
সেটআপ আর্গুমেন্ট দিয়ে কাস্টম ফাংশন টাইম করা
import timeit
def func1():
return 1
def func2():
return sum([-1, 0, 1, 1])
# মেথডগুলো টেস্ট করুন
print(func1())
print(func2())
# সেটআপ আর্গুমেন্ট দিয়ে মেথড কল করুন
print(timeit.repeat("func1()", setup="from __main__ import func1"))
print(timeit.repeat("func2()", setup="from __main__ import func2"))
আউটপুট
1 1 [0.44798489246658874, 0.4411512652046069, 0.44570416580426686] [1.583622557983199, 1.5712399227517881, 1.5469479030713984]
func1() কম কাজ করছে, তাই তা দ্রুততর এক্সিকিউট হয়েছে।
সারসংক্ষেপ
timeit মডিউল ব্যবহার করে CLI এবং স্ক্রিপ্ট দিয়ে পাইথন কোডের পারফরম্যান্স মাপার পদ্ধতি দেখানো হলো।