在父与子分支子进程中使用本地函数的调用延迟? C

时间:2012-07-17 13:48:10

标签: c fork

我很难制作一个场景,它会显示调用简单本地函数与相同函数之间但在子进程内的时间差。我正在测试的特定函数显示本地函数和子进程的difftime(x,y)函数没有差异(时间= 0)。有人可以概括这两种做同样事情的方法的潜在时差吗?

作为旁注,我尝试将每个任务执行1000次,然后将时间除以1000,但即使这样,返回的时间也是0.例如,我有:

time(&start);    
for(int i = 0; i<1000; i++){
  reply[i] = my_channel.send_request("hello");
}
time(&end);
time_req_1 = difftime(end,start);

时间返回“time_req_1”= 0。 我只是把这个代码段放在以防万一我做错了。

3 个答案:

答案 0 :(得分:3)

您必须记住time的分辨率是以秒为单位。一种常见的时间方式,例如函数调用是使用clock

clock_t start_time = clock();

some_lengthy_function_call();

clock_t end_time = clock();

printf("Elapsed time: %.02f seconds\n",
       (double) (end_time - start_time) / CLOCKS_PER_SEC);

修改:如果您想要比clock提供更高的准确度和分辨率,请参阅Jonathan Leffler对您的问题的评论。

答案 1 :(得分:1)

在大多数具有大多数操作系统的机器上,时间仅精确到一秒钟。对于仅1000次迭代,您需要在架构上找到更准确的时间函数。

相对便携的界面是clock()。我最后一次在带有MSVC的Windows下试用它,准确度是18ms。

答案 2 :(得分:0)

对于问题的第一部分,您需要确保在fork调用之后,您还没有调用exec

在你的第二部分中,嗯......它的运行速度太快difftime尝试使用gettimeofday()它会给你高达微秒