محاسبه زمان اجرایی قطعه کد C++ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

وبـــلاگ هــفت خــط کــد


آموزش های برنامه نویسی
۶۰ نفر آنلاین
۱ عضو و ۵۹ مهمان در سایت حاضرند

محاسبه زمان اجرایی قطعه کد C++

+1 امتیاز
750 بازدید
سلام دوستان.

دقیق ترین روش برای محاسبه میزان زمان مصرفی یک قطعه کد در C++ با چه توابعی انجام میشه؟
سوال شده بهمن 30, 1392  بوسیله ی farnoosh (امتیاز 2,350)   5 12 47

2 پاسخ

+3 امتیاز
 
بهترین پاسخ
از اونجایی که میدونم شما با c++11 کار می کنید. می تونید زمان اجرایی کدتون را به صورت میلی ثانیه و نانو ثانیه محاسبه کنید.
#include <vector>
#include <string>
#include <iostream>
#include <chrono>

using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{

	auto start = chrono::steady_clock::now();

       //your code here

	auto end = chrono::steady_clock::now();
	auto diff = end - start;
	cout << chrono::duration <double, milli> (diff).count() << " ms" << endl;
	cout << chrono::duration <double, nano> (diff).count() << " ns" << endl;
	
	
	return 0;
}

 

 

پاسخ داده شده بهمن 30, 1392 بوسیله ی مصطفی ساتکی (امتیاز 16,732)   17 25 66
+3 امتیاز

دقیق ترین رو نمیدونم ولی با استفاده از توابع time میشه زمان یه قطعه کد رو حساب کرد به این صورت که یه متغیر رو مساوی با زمان اولیه قرار میدن و متغیر دوم رو  با زمان ثانویه بعد تفاوت این دو میشه زمان کد : 

#include <iostream>

#include <ctime>

using namespace std;

int main()
{
    clock_t time;
    time = clock();

    /// Your code

    time = clock() - time;
    cout << "It took me " << time << " clicks and " << ((float)time)/CLOCKS_PER_SEC << " seconds"  << endl ;
    return 0;
}

 

پاسخ داده شده بهمن 30, 1392 بوسیله ی amirhossein (امتیاز 157)   2
سلام. بابت کدتون ممنون. ببخشید من متوجه CLOCKS_PER_SEC نشدم که زمان را بر آن تقسیم کردید و آیا مقدار آن ثابت است یا نه؟ مثلا من یک نمونه برنامه را که اجرا کردم خروجی time= 1437 شد و تقسیم آن بر clock_per_sec برابر 1.437 شد این یعنی مقدار آن برابر 1000 است. آیا این مقدار برای همه کامپیوترها با هر پردازش گری یکسانه؟
آره CLOCKS_PER_SEC همه جا برابر 1000 هستش
به این شکل تعریف شده :
#define CLOCKS_PER_SEC  1000
...