Tag: 时间

setrlimit不可靠?

我正在尝试使用setrlimit()来限制进程所需的时间。 但是,当我执行某些操作(如printf()时,它似乎不起作用。 这是一个说明问题的测试程序: #include #include int main(void) { int i; struct rlimit limit; limit.rlim_cur = 3; limit.rlim_max = 3; // send SIGKILL after 3 seconds setrlimit(RLIMIT_CPU, &limit); // doesn’t get killed for(i=0; i<1000000; i++) printf("%d",i); return 0; } 但是,如果我用一个不同的例程替换for循环,比如天真的斐波那契: int fib(int n) { if(n<=1) return 1; return fib(n-1)+fib(n-2); } int main(void) { … fib(100); … […]

c / c ++ – 通过套接字发送time_t的最安全的方法

我已经建立了一个C ++服务器/客户端环境,并且正在尝试从服务器向客户端发送time_t值(在任何服务器中都很有用)。 但是我很头疼:time_t似乎没有任何尺寸规格。 我想知道什么是通过网络发送time_t最安全(更便携)的方式。 这是一个小例子: time_t T = time(NULL); unsigned char * P = (unsigned char *)&T; // … Convert it to network byte order, etc. // Here, ‘s’ would be the socket, and ‘S’ // the size of the data that is going to // be sent send(s, P, S, 0); 我有两个问题: time_t不是大小固定的 time_t可以是有符号或无符号整数数据类型的typedef […]

当程序将受益于预取和非临时加载/存储?

我做了一个测试 for (i32 i = 0; i < 0x800000; ++i) { // Hopefully this can disable hardware prefetch i32 k = (i * 997 & 0x7FFFFF) * 0x40; _mm_prefetch(data + ((i + 1) * 997 & 0x7FFFFF) * 0x40, _MM_HINT_NTA); for (i32 j = 0; j < 0x40; j += 0x10) { //__m128 v = […]

如何测量cpu时间和挂钟时间?

我看到很多关于此的主题,即使在stackoverflow上,例如: 如何在Linux / Windows上测量CPU时间和挂钟时间? 我想测量cpu和wall时间。 虽然在我发布的主题中回答了问题的人建议使用gettimeofday来测量墙上时间,但我认为最好使用clock_gettime 。 所以,我写了下面的代码(它没关系,是否真的测量了一个时间,而不是cpu时间?我问,因为我找到了一个网页: http : //nadeausoftware.com/articles/2012/03/c_c_tip_how_measure_cpu_time_benchmarking#clockgettme其中说clock_gettime测量cpu时间…)是什么,我应该用哪个来测量墙上时间? 另一个问题是关于cpu时间。 我找到了clock非常好的答案,所以我也为它写了一个示例代码。 但它不是我真正想要的,因为我的代码它显示了0秒的CPU时间。 是否可以更准确地测量cpu时间(以秒为单位)? 感谢您的帮助(目前,我只对Linux解决方案感兴趣)。 inheritance我的代码: #include #include /* printf */ #include /* sqrt */ #include int main() { int i; double sum; // measure elapsed wall time struct timespec now, tmstart; clock_gettime(CLOCK_REALTIME, &tmstart); for(i=0; i<1024; i++){ sum += log((double)i); } clock_gettime(CLOCK_REALTIME, &now); double […]

测量C中函数的时间

我正在调试一个C应用程序,我想知道它在特定函数中花费了多少时间。 我可以更改源代码并添加更多代码来进行测量,但对我来说似乎并不合适。 我宁愿用外部应用程序来做,而不是每次都重新编译。 我发现可以在GDB中设置一个断点,所以我想,必须能够通过简单的程序使用类似工具跟踪时间: – 设置断点 – 停止时,测量实际时间并运行函数 – 离开函数时,再次测量时间然而,我还没有找到一种方法如何在gdb中做到这一点:( 有任何想法吗? 谢谢

以毫秒精度测量时间

我的程序将在时间和空间上相互竞争不同的排序算法。 我有空间,但测量时间给我带来了一些麻烦。 以下是运行排序的代码: void test(short* n, short len) { short i, j, a[1024]; for(i=0; i<2; i++) { // Loop over each sort algo memused = 0; // Initialize memory marker for(j=0; j<len; j++) // Copy scrambled list into fresh array a[j] = n[j]; // (Sorting algos are in-place) // ***Point A*** switch(i) { // Pick […]

如何以编程方式将时间从一个时区转换为另一个时区?

GNU date命令的信息页面包含以下示例: 例如,使用GNU date命令,您可以回答“当巴黎时钟显示2004年10月31日上午6:30时纽约几点钟的时间?” 通过使用以“TZ =”Europe / Paris“’开头的日期,如以下shell脚本中所示: $ export TZ=”America/New_York” $ date –date=’TZ=”Europe/Paris” 2004-10-31 06:30′ Sun Oct 31 01:30:00 EDT 2004 在此示例中,’ – date’操作数以其自己的’TZ’设置开头,因此该操作数的其余部分根据’Europe / Paris’规则处理,将字符串2004-10-31 06:30视为它在巴黎。 但是,由于date命令的输出是根据整个时区规则处理的,因此它使用纽约时间。 (2004年巴黎通常比纽约早6个小时,但这个例子指的是一个短暂的万圣节时期,当时差距为5小时。) 我试图在C语言中以编程方式完成基本相同的事情,而无需数百万次调用date程序。 基本上我正在寻找一种方法,在一个时区中采取任意日期和时间,并将其转换为另一个时区中的等效日期和时间,可以直接转换为UTC转换。 只要我可以使用标准函数( strftime / strptime / mktime / etc)操作它们,我就不关心输入和输出时间的格式。 date程序似乎使用coreutils包内部的复杂例程来实现这一点,我正在寻找一种方法,使用标准POSIX / Linux例程或外部库在C中执行此操作。 我看了很多看起来很有希望的zoneinfo ,但我找不到任何有用的库。

如何以毫秒为单位获得以C为单位的时间? (视窗)

我在网上搜索过但我只找到了一种方法,但这样它就会以秒为单位而不是几毫秒。 我的代码是: #include #include #include int main(void) { int solucion; time_t start, stop; clock_t ticks; long count; time(&start); solucion = divisores_it(92000000, 2); time(&stop); printf(“Finnished in %f seconds. \n”, difftime(stop, start)); return 0; }

如何用C计算执行时间?

如何在以下代码中计算执行时间: #include /* Core input/output operations */ #include /* Conversions, random numbers, memory allocation, etc. */ #include /* Common mathematical functions */ #include /* Converting between various date/time formats */ #include #define PI 3.1415926535 /* Known vaue of PI */ #define NDARTS 128 /* Number of darts thrown */ double pseudo_random(double a, double b) { […]

为什么Google的TrueTime API很难复制?

我不确定为什么媒体普遍认为谷歌的TrueTime API难以复制(有线,Slashdot等)。 我可以理解获得谷歌实现的低错误间隔是多么困难,但我不知道API本身将如何变得非常困难。 例如,我掀起了一个黑客攻击版本。 这是间隔。 typedef struct TT_interval { struct timeval earliest; struct timeval latest; } TT_interval; 这是现在的function。 int TT_now(TT_interval* interval) { struct ntptimeval tv; struct timeval delta; struct timeval* earliest_p = &(interval->earliest); struct timeval* latest_p = &(interval->latest); struct timeval* now_p = &(tv.time); struct timeval* delta_p = δ timerclear(&delta); timerclear(&interval->earliest); timerclear(&interval->latest); if(ntp_gettime(&tv) == 0) { […]