标签: gettimeofday

更快相当于gettimeofday

在尝试构建一个对延迟敏感的应用程序时,需要每秒发送100条消息,每条消息都有时间字段,我们要考虑优化gettimeofday.首先想到的是rdtsc基于优化.有什么想法吗 ?还有其他指针吗?返回的时间值所需的准确度以毫秒为单位,但如果该值偶尔与接收器不同步1-2毫秒,则不是很大.试图比62纳秒的gettimeofday做得更好

c optimization clock gettimeofday

25
推荐指数
3
解决办法
3万
查看次数

time()和gettimeofday()返回不同的秒数

在我测试的两个系统上(一个32位的Ubuntu 12.04服务器和一个64位的Ubuntu 13.10 VM),time()给出的纪元以来的秒数可能与gettimeofday()不同.

具体来说,虽然我在调用time() 调用gettimeofday(),但返回的值time()有时小于tv_sec返回的值gettimeofday().

这显然发生在时钟滚动到新的秒钟之后.

这导致了我的一些代码中的错误,这些代码期望time()和gettimeofday()的秒可以互换.

示例代码演示此问题:

#include <stdio.h>
#include <time.h>
#include <sys/time.h>

int main()
{
  time_t start = time(NULL);
  int same = 0;
  int different = 0;
  int max_usec = 0;
  while (1) {
    time_t t;
    struct timeval tv;
    gettimeofday(&tv, NULL);
    t = time(NULL);
    if (t < tv.tv_sec) {
      different++;
      if (tv.tv_usec > max_usec) {
        max_usec = tv.tv_usec;
      }
    } else { …
Run Code Online (Sandbox Code Playgroud)

c linux time gettimeofday

21
推荐指数
3
解决办法
1万
查看次数

我应该用什么来替换Windows上的gettimeofday()?

我正在编写一个便携式Socket类,它支持发送和接收的超时...为了实现这些超时我正在使用select()....但是,我有时需要知道我被阻止了多长时间里面select()当然在Linux上我通过gettimeofday()在我打电话之前和之后调用select()然后timersub()用来计算delta来实现...

鉴于select()Windows接受struct timeval它的超时,我应该用什么方法来取代Windows上的gettimeofday()?

windows winapi select gettimeofday

18
推荐指数
1
解决办法
7万
查看次数

如何使用gettimeofday()或与Visual Studio C++ 2008等效的东西?

有人可以帮我在Windows XP上使用Visual Studio C++ 2008的gettimeofday()函数吗?这是我在网上找到的代码:

#include < time.h >
#include <windows.h> 

#if defined(_MSC_VER) || defined(_MSC_EXTENSIONS)
  #define DELTA_EPOCH_IN_MICROSECS  11644473600000000Ui64
#else
  #define DELTA_EPOCH_IN_MICROSECS  11644473600000000ULL
#endif

struct timezone 
{
  int  tz_minuteswest; /* minutes W of Greenwich */
  int  tz_dsttime;     /* type of dst correction */
};

int gettimeofday(struct timeval *tv, struct timezone *tz)
{
  FILETIME ft;
  unsigned __int64 tmpres = 0;
  static int tzflag;

  if (NULL != tv)
  {
    GetSystemTimeAsFileTime(&ft);

    tmpres |= ft.dwHighDateTime;
    tmpres <<= 32;
    tmpres |= ft.dwLowDateTime;

    /*converting file time to …
Run Code Online (Sandbox Code Playgroud)

c visual-studio-2008 visual-studio visual-c++ gettimeofday

10
推荐指数
3
解决办法
6万
查看次数

C++中毫秒精确的基准测试?

我真的不想描述,因为我想要在不同的简单功能上做很多不同的小基准测试.对于我的生活,我找不到一种方法来记录C++中的毫秒数,顺便说一句,我正在使用Linux.

你能否建议以毫秒为单位获取系统时钟的方法(如果我找不到简单的方法,我可以用几秒钟来解决......)以及它们包含在哪个标题中?

c++ linux benchmarking clock gettimeofday

7
推荐指数
2
解决办法
6330
查看次数

gettimeofday()总是可以访问?

我已经尝试了谷歌,php.net和php邮件列表的档案,但我找不到我想要的东西.也许这是显而易见的,或者也许没有人想知道这个......

多年来,我一直使用microtime()来获取当前时间,包括微秒.但是,有人在手册页中的一句话中指出:"此功能仅在支持gettimeofday()系统调用的操作系统上可用."

PHP的gettimeofday()表明了同样的情况:"这是gettimeofday(2)的接口."

但是......那么什么样的系统没有这个系统调用?一些谷歌搜索提供了许多C程序员试图在Windows上的C中获得gettimeofday()实现,因为它似乎不包括它.但PHP的microtime()和gettimeofday()似乎在Windows上运行得很好(至少我可以使用的方框).此外,我似乎无法在网络上的任何地方找到PHP代码,似乎在调用它之前检查microtime()或gettimeofday()的存在,并且必须有许多PHP程序员在Windows上工作盒子......

我是否应该忽略手册中的句子并且只相信这两个函数始终可用?或者是否有另一种跨平台方式来获取系统时间,包括微秒,而不使用microtime()或gettimeofday()?或者两个函数是否总是存在,但是如果没有gettimeofday()系统调用可用,那么就不给我微秒?

编辑1:

http://www.php.net/microtime

"Returns the current Unix timestamp with microseconds.
This function is only available on operating systems that 
support the gettimeofday() system call."
Run Code Online (Sandbox Code Playgroud)

也许这有点澄清了我的观点.

php gettimeofday microtime

6
推荐指数
1
解决办法
2168
查看次数

在什么情况下 CLOCK_MONOTONIC 可能不可用

Java在 LinuxSystem.nanoTime()的单调实现依赖于操作系统CLOCK_MONOTONIC可用的事实。如果它不可用,它会回退到gettimeofday这可能导致在使用nanoTime. 例如,以下测试可能会失败。

long t1 = System.nanoTime();
long t2 = System.nanoTime();
assert t2 >= t1
Run Code Online (Sandbox Code Playgroud)

在哪些情况下CLOCK_MONOTONIC可能在服务器上不可用?假设CLOCK_MONOTONIC时钟在所有现代 Linux 服务器上都可用是否合理?

java linux time clock gettimeofday

6
推荐指数
1
解决办法
1826
查看次数

gettimeofday()的单位是多少?

我有一个程序来计算pub-sub模型中对象的延迟.我已将以下函数用于时间戳:

uint64_t GetTimeStamp() {
    struct timeval tv;
    gettimeofday(&tv,NULL);
    return tv.tv_sec*(uint64_t)1000000+tv.tv_usec;
}
Run Code Online (Sandbox Code Playgroud)

延迟测量为发布者和订阅者的时间戳差异.所以,我担心测量的延迟单位.是几秒钟还是几微秒?

c c++ gettimeofday

5
推荐指数
1
解决办法
1万
查看次数

clock_gettime() 对比 gettimeofday() 用于测量 OpenMP 执行时间

我正在编写一些 C 代码,它实现了一个三重嵌套 for 循环来计算矩阵乘法,同时使用 OpenMP 对其进行并行化。我试图准确地测量从 for 循环开始到结束所花费的时间。到目前为止,我一直在使用 gettimeofday(),但我注意到有时感觉它没有准确记录执行 for 循环所花费的时间。似乎是在说它比实际花费的时间更长。

这是原始代码:

struct timeval start end;
double elapsed;

gettimeofday(&start, NULL);
#pragma omp parallel for num_threads(threads) private(i, j, k)
for(...)
{
 ...
 for(...)
 {
  ...
  for(...)
  {
   ...
  }
 }
}

gettimeofday(&end, NULL);
elapsed = (end.tv_sec+1E-6*end.tv_usec) - (start.tv_sec+1E-6*start.tv_usec)
Run Code Online (Sandbox Code Playgroud)

这是使用clock_gettime()的相同代码:

 struct timespec start1, finish1;
 double elapsed1;

clock_gettime(CLOCK_MONOTONIC, &start1);

  #pragma omp parallel for num_threads(threads) private(i, j, k)
    for(...)
    {
     ...
     for(...)
     {
      ...
      for(...)
      {
       ...
      }
     }
    }

clock_gettime(CLOCK_MONOTONIC, &finish1);
elapsed1 …
Run Code Online (Sandbox Code Playgroud)

c parallel-processing time openmp gettimeofday

5
推荐指数
1
解决办法
3041
查看次数

gettimeofday 函数的精度是多少?

我正在阅读 OSTEP 的single.dvi章节。在作业部分,它说:

\n
\n

您\xe2\x80\x99必须考虑的一件事是计时器的精度和准确度。您可以使用的典型计时器是gettimeofday();\n阅读手册页以获取详细信息。您\xe2\x80\x99 将看到gettimeofday()\n返回自 1970 年以来以微秒为单位的时间;然而,这并不意味着计时器精确到微秒。测量连续调用\ngettimeofday()以了解计时器的精确度\n;这将告诉您必须运行多少次空系统调用\n测试\xe2\x80\x99 迭代才能获得良好的测量结果。如果\ngettimeofday()对您来说不够精确,您可以考虑\nrdtsc使用 x86 计算机上可用的指令

\n
\n

我编写了一些代码来测试调用函数的成本,gettimeofday()如下所示:

\n
#include <stdio.h>\n#include <sys/time.h>\n\n#define MAX_TIMES 100000\n\nvoid m_gettimeofday() {\n    struct timeval current_time[MAX_TIMES];\n    int i;\n    for (i = 0; i < MAX_TIMES; ++i) {\n        gettimeofday(&current_time[i], NULL);\n    }\n    printf("seconds: %ld\\nmicro_seconds: %ld\\n", current_time[0].tv_sec, current_time[0].tv_usec);\n    printf("seconds: %ld\\nmicro_seconds: %ld\\n", current_time[MAX_TIMES - 1].tv_sec, current_time[MAX_TIMES - 1].tv_usec);\n    printf("the average time of a gettimeofday function call is: %ld us\\n", (current_time[MAX_TIMES - …
Run Code Online (Sandbox Code Playgroud)

c gettimeofday

5
推荐指数
1
解决办法
1628
查看次数