время в миллисекундах в с99? - PullRequest
2 голосов
/ 22 апреля 2019

Я пытаюсь выяснить, как вычислить миллисекунды между некоторыми соединениями программирования сокетов в C99, но получает 0 мс на C99 и возвращает фактическое значение на терминале Mac. Я включил временные части моего кода.

Init:

  struct timeval start,end;
  double t1,t2;
  t1 = 0.0;
  t2 = 0.0;

начало работы:

t1+=start.tv_sec+(start.tv_usec/1000000.0);

Конец операции:

t2+=end.tv_sec+(end.tv_usec/1000000.0);

А затем просто печатать фактическое время в мс:

printf("Sent........RTT = %g ms\n",(t2-t1)/100);

1 Ответ

1 голос
/ 23 апреля 2019

Предполагая, что вы корректно обновляете структуры timeval, вы вычисляете не миллисекунды, а целые секунды, и вы печатаете разницу, деленную на 100 вместо умноженной на 1000. Вы потеряете меньшую точность, вычислив разницу во времени:

diff += (end.tv_sec - start.tv_sec) * 1000.0 + end.tv_usec / 1000.0 - start.tv_usec / 1000.0;

...

printf("Sent........RTT = %g ms\n", diff / 100);
...