PDA

View Full Version : سوال: نحوه استفاده از stopwatch در C++‎



Mina1394
سه شنبه 08 دی 1394, 21:22 عصر
سلام ؛ من کدی نوشتم که در آن می خواهم زمان محاسبه تابع را بدست بیاورم
نحوه استفاده از stopwatch در سی شارپ را در فروم دیدم اما متاسفانه در ++c آموزش دقیقی پیدا نکردم و با توجه به مثال msdn سعی کردم دستورات را اجرا کنم اما با خطا مواجه شدم

using namespace System::Diagnostics;


Stopwatch= gcnew Stopwatch();
Stopwatch->Start();
function//
Stopwatch->Stop();

ممنون میشم راهنمایی بفرمایید

negative60
سه شنبه 08 دی 1394, 22:27 عصر
#include <stdio.h>
#include <time.h>

int main()
{
timeval startTime;
timeval endTime;
long seconds, useconds;
double duration;
gettimeofday(&startTime, 0);
//================================================== ===============


//YourFunction();


//================================================== ===============
gettimeofday(&endTime, 0);

seconds = endTime.tv_sec - startTime.tv_sec;
useconds = endTime.tv_usec - startTime.tv_usec;

duration = seconds + useconds/1000000.0;

printf("Time elapsed: %.3lf ms\n", duration);


return 0;
}

Mina1394
سه شنبه 08 دی 1394, 23:07 عصر
#include <stdio.h>
#include <time.h>

int main()
{
timeval startTime;
timeval endTime;
long seconds, useconds;
double duration;
gettimeofday(&startTime, 0);
//================================================== ===============


//YourFunction();


//================================================== ===============
gettimeofday(&endTime, 0);

seconds = endTime.tv_sec - startTime.tv_sec;
useconds = endTime.tv_usec - startTime.tv_usec;

duration = seconds + useconds/1000000.0;

printf("Time elapsed: %.3lf ms\n", duration);


return 0;
}

سلام و با تشکر از شما،توضیح میدید لطفا؟

Mina1394
سه شنبه 08 دی 1394, 23:11 عصر
اگر ازین کد استفاده کنم برای محاسبه زمان ۲ تابع مجزا باید چطور عمل کرد؟

negative60
چهارشنبه 09 دی 1394, 01:48 صبح
قبل از اجرای تابع زمان جاری رو داخل يک متغير نگه ميداريم و بعد از اتمام کار تابع هم زمان جاری رو داخل يک متغير ديگه ميريزيم در ادامه اين دو زمان رو از هم کم ميکنيم و مقدار باقی مونده به ميکروثانيه ميشه زمان تابع, در آخر برای تبديل به ثانيه و ميلی ثانيه جمع مقدار به دست اومده رو تقسيم بر 1000000 ميکنيم

برای استفاده در جاهای مختلف ميتونيد برای همين مثال يک کلاس بسازيد

Poores
چهارشنبه 09 دی 1394, 15:42 عصر
قبل از اجرای تابع زمان جاری رو داخل يک متغير نگه ميداريم و بعد از اتمام کار تابع هم زمان جاری رو داخل يک متغير ديگه ميريزيم در ادامه اين دو زمان رو از هم کم ميکنيم و مقدار باقی مونده به ميکروثانيه ميشه زمان تابع, در آخر برای تبديل به ثانيه و ميلی ثانيه جمع مقدار به دست اومده رو تقسيم بر 1000000 ميکنيم

برای استفاده در جاهای مختلف ميتونيد برای همين مثال يک کلاس بسازيد

کاملا درسته صحبت ایشون
فقط برای تبدیل میلی ثانیه به ثانیه باید تقسیم به 1000 کرد (مثل میلی متر به متر )


برای گرفتن زمان از تابع clock() استفاده کنین (از کتابخانه time.h استفاده میکنه).
به اینصورت :

int start = clock(); // gereftane zaman dar shorooe tabe
// edame tabe harchi ke hast
//
//
//
int time = clock() - start;
// time inja meghdar zamane ejrae tabe be mili sanie hast
time /= 1000;
// va inja be sanie tabdil mishe

zero_ox
چهارشنبه 09 دی 1394, 17:08 عصر
کد درسته فقط ایشون به اشتباه میکروثانیه رو میلی ثانیه نوشتن : ولی هدر فکرکنم <sys/time.h>
tv_secTime interval, in seconds.
tv_usecTime interval, in microseconds. This value is used in combination with the tv_sec member to represent time interval values that are not a multiple of seconds.