חישוב זמן ריצה

fortus

New member
חישוב זמן ריצה

שלום לכולם
נתונה לי הבעיה הבאה:
יש לי תוכנית כתובה ב- c++ שהמטרה שלה זה להריץ קבצי בדיקה לתוכנית אחרת
(אני יודע שזה לא הכי יעיל או חכם לעשות אבל זה מה שאני יודע לעשות)
אני עשיתי את התוכנית ככה שאני כל פעם עושה fork
ומפעיל execvp
אני הייתי רוצה לדעת איך לחשב את הזמן ריצה של התוכנית שאני עושה לה execvp
ניסתי לעשות את הדבר הבא :



times(&start);
int cpid = fork();
int status;
char* args[]= {(char*) (string("./plan").c_str()),(char* )d_name,(char* )p_name,(char* )out,(char*) (string("false").c_str()),(char*) (string("false").c_str()),NULL};
switch (cpid) {
case -1: printf("Fork failed; cpid == -1\n");
break;

case 0: //child_pid = getpid();
execvp((char*) (string("./plan").c_str()),args);
cout <<"ERROR : exec failed:" <<endl;
exit(1);
break;
default: printf("This is the parent: waiting for %d to finish\n", cpid);
waitpid(cpid, &status, 0);
times(&end);
int total_ms = (end.tms_utime - start.tms_utime) * 10;
cout << "Total time: " << total_ms << " seconds" << endl;

אבל תמיד מודפס לי 0 למרות שלא כך הדבר (אני יודע כי בתוך התוכנית שאני מנסה להריץ יש לי מונה זמן והוא מראה דברים אחרים לגמרי)
אני לא מבין מה אני עושה לא נכון
אשמח לעזרה
 
אני לא יודע מה זה times

אין כאן משהו שגוי באופן עקרוני. תחליף את times ב-time ואת ה-start,end ל-time_t.
אם אתה עדיין מקבל 0 יש רק הסבר אחד - plan לא רצה כלל, או רצה פחות מ-100 מילישניות. אתה רואה את ההדפסות של plan?
 

fortus

New member
קודם כל תודה

אני אנסה להלחיף את הtimes ב- time
בכל אופו אני רוצה את ההדפסות של ה-plan
נכון שהזמנים המדוברים הם די קטנים אבל הם יותר מ-100 מילי שניות הם בערך 4 מאיות
אבל זה אמור להדפיס
 
למעלה