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.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.