কম্পিউটার টিউটোরিয়াল

পাইথনে timeit মডিউল: কোড এক্সিকিউশন টাইম মাপার সঠিক পদ্ধতি

পাইথন কোডের এক্সিকিউশন টাইম মাপার অনেক পদ্ধতি রয়েছে। একটি পদ্ধতি হলো পাইথনের বিল্ট-ইন 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 এবং স্ক্রিপ্ট দিয়ে পাইথন কোডের পারফরম্যান্স মাপার পদ্ধতি দেখানো হলো।

  1. Python-এ 3D প্লট PDF 3D-এ সংরক্ষণ করা

  2. পাইথন PyGame: উইন্ডোতে ইমেজ (Image) লোড ও প্রদর্শন করুন

  3. পাইথনে রেগুলার এক্সপ্রেশন উদাহরণসহ

  4. পাইথনে সকেট প্রোগ্রামিং মাল্টি-থ্রেডিং সহ