অনেক সময় আমাদের পুরো কোডের বা কোনো নির্দিষ্ট ফাংশনের এক্সিকিউশন টাইম বের করা দরকার হয়। সব ল্যাংগুয়েজেই টাইমার ফাংশন আছে যা ব্যবহার করে এক্সিকিউশন টাইম বের করা যায়।
সি/সি++ দিয়ে শুরু করি।
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include<iostream> #include<ctime> using namespace std; void f() { int sum=0; for(int i=0;i<=10000000;i++) sum++; } void g() { int sum=0; for(int i=0;i<=30000000;i++) sum++; } int main() { clock_t start,end; start=clock(); f(); end=clock(); double total_time1=((double)end-start)/CLOCKS_PER_SEC; start=clock(); g(); end=clock(); double total_time2=((double)end-start)/CLOCKS_PER_SEC; cout<<"Function g() is "<<total_time2/total_time1<<" times slower"; } |
clock() রিটার্ন করে প্রোগ্রাম চালু করার পর সিস্টেম clock tick সংখ্যা। CLOCKS_PER_SEC একটি বিল্টইন ম্যাক্রো যা দিয়ে ভাগ করে আমরা সেকেন্ডে সময় নির্ণয় করতে পারি।
পাইথনে time.time() ফাংশন ব্যবহার করে কাজটি করতে পারি:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import time def F(): sum=0 for i in range (0,10000001): sum=sum+1 def G(): sum=0 for i in range (0,30000001): sum=sum+1 tStart = time.time() F() time1=(time.time() - tStart) tStart = time.time() G() time2=(time.time() - tStart) print "Function G() is %f times slower" %(time2/time1) |
পিএইচপি:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<? function F() { $sum=0; for($i=0;$i<=10000000;$i++) $sum++; } function G() { $sum=0; for($i=0;$i<=30000000;$i++) $sum++; } $time_start = microtime(true); F(); $time_end = microtime(true); $time1 = $time_end - $time_start; $time_start = microtime(true); G(); $time_end = microtime(true); $time2 = $time_end - $time_start; echo "Function G() is " . $time2/$time1 ." Times Slower"; ?> |
microtime() ফাংশনটি current unix time stamp রিটার্ণ করে ।
জাভাস্ক্রিপ্টে রানটাইম বের করতে পারি getTime() ফাংশন ব্যবহার করে। জাভার জন্য ব্যবহার করা যেতে পারে System.currentTimeMillis()।
উপরের কোডগুলো রান করলে দেখবে প্রতিবার আউটপুট কিছুটা অন্যরকম দেখাচ্ছে। প্রসেসরের ক্ষমতা,লোড সহ আরো কিছু ফ্যাক্টরের উপরে এক্সিকিউশন টাইম নির্ভর করে তাই একেকবার একেকরকম আসে তবে খুব বেশি পার্থক্য হয়না। এ জন্য সব থেকে ভালো হয় বেশ কয়েকবার এক্সিকিউশন টাইম বের করে এভারেজ করলে।
ফেসবুকে মন্তব্য
Powered by Facebook Comments
ভালো লাগলো, কাজে লাগানো যাবে।