aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authormattf <mattf@f38db490-d61c-443f-a65b-d21fe96a405b>2007-09-29 00:19:15 +0000
committermattf <mattf@f38db490-d61c-443f-a65b-d21fe96a405b>2007-09-29 00:19:15 +0000
commitd2e066e373235fa4b8598a615bf82312d2185d4f (patch)
tree66fa3e264f95db759e6c63686bafd8fb158a8146 /main
parentbf2b0f5b8b8dcb2689ea655b024df2088d31c169 (diff)
Let's use process time instead of wall clock time for show translation
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@84115 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main')
-rw-r--r--main/translate.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/main/translate.c b/main/translate.c
index c26e627a2..b22a3386d 100644
--- a/main/translate.c
+++ b/main/translate.c
@@ -30,6 +30,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
+#include <sys/resource.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
@@ -370,8 +371,8 @@ static void calc_cost(struct ast_translator *t, int seconds)
{
int sofar=0;
struct ast_trans_pvt *pvt;
- struct timeval start;
- struct timeval end;
+ struct rusage start;
+ struct rusage end;
int cost;
if (!seconds)
@@ -389,7 +390,7 @@ static void calc_cost(struct ast_translator *t, int seconds)
t->cost = 999999;
return;
}
- start = ast_tvnow();
+ getrusage(RUSAGE_SELF, &start);
/* Call the encoder until we've processed the required number of samples */
while (sofar < seconds * 8000) {
struct ast_frame *f = t->sample();
@@ -406,8 +407,9 @@ static void calc_cost(struct ast_translator *t, int seconds)
ast_frfree(f);
}
}
- end = ast_tvnow();
- cost = ((end.tv_sec - start.tv_sec)*1000000) + end.tv_usec - start.tv_usec;
+ getrusage(RUSAGE_SELF, &end);
+ cost = ((end.ru_utime.tv_sec - start.ru_utime.tv_sec)*1000000) + end.ru_utime.tv_usec - start.ru_utime.tv_usec;
+ cost += ((end.ru_stime.tv_sec - start.ru_stime.tv_sec)*1000000) + end.ru_stime.tv_usec - start.ru_stime.tv_usec;
destroy(pvt);
t->cost = cost / seconds;
if (!t->cost)