Я пытаюсь выполнить функцию, используя функцию gettimeofday()
. Я могу получить время в микросекундах, но при попытке разделить его на long
, чтобы получить время в секундах, мое значение усекается до одного integer
. Кто-нибудь знает, почему это происходит? Я предположил, что деление на long = 1000000.0
предотвратит такое усечение.Отдел длинным усеченным - C
Timing функции:
struct timeval t1,t2;
gettimeofday(&t1, NULL);
// Computes C - C1 - using single thread
for (i=0; i < n; i++)
for (j=0; j < p; j++)
{
C1[i][j]=0;
for (k=0; k < m; k++)
C1[i][j] += A[i][k]*B[k][j];
}
gettimeofday(&t2, NULL);
Отдел применяется здесь:
long divider = 1000000.0;
long elapsed = ((t2.tv_sec - t1.tv_sec) * 1000000.0L) + (t2.tv_usec - t1.tv_usec);
elapsed = (elapsed/divider);
printf("Time in seconds: %ld seconds\n", elapsed);
Любая помощь приветствуется.
Почему вы не используете двойной? long - целочисленный тип. – rerun
Вы знаете, что 'long' является целым типом, не так ли? –
ahhhh, я извиняюсь. Я тестировал его с помощью double, но я не изменял код формата для printf. Спасибо за помощь. –