Messages in this thread | | | Subject | slow nanosleep? | From | Joakim Tjernlund <> | Date | Wed, 8 Sep 2010 09:45:12 +0200 |
| |
Hi Thomas
while playing with nanosleep I noticed that it is slow compared to select. This little test program shows what the effect: #include <time.h> #include <sys/time.h> #include <stdio.h> #define NANO_SLEEP 1 main() { struct timespec req, rem; struct timeval tv1, tv2, tv_res; int res;
rem.tv_sec = 0; rem.tv_nsec = 0;
req.tv_sec = 0; req.tv_nsec = 0;
tv2.tv_sec = req.tv_sec; tv2.tv_usec = req.tv_nsec/1000;
gettimeofday(&tv1, NULL); #ifdef NANO_SLEEP res = nanosleep(&req, &rem); #else res = select(0, NULL,NULL,NULL, &tv2); #endif gettimeofday(&tv2, NULL); timersub(&tv2, &tv1, &tv_res); #ifdef NANO_SLEEP printf("nanosleep\n"); #else printf("selectsleep\n"); #endif printf("req:%d :%d\n", (int)req.tv_sec, (int)req.tv_nsec/1000); printf("tv_res:%d :%d\n", (int)tv_res.tv_sec, (int)tv_res.tv_usec); } root@localhost ~ # ./nanosleep nanosleep req:0 :0 tv_res:0 :119 root@localhost ~ # ./selectsleep selectsleep req:0 :0 tv_res:0 :36
Isn't nanosleep to slow here? The min time is about 120 us compared to select which is 36 us. I would expect nanosleep to be better than select.
Kernel 2.6.35 with HIGH_RES timers on Powerpc(MPC8321, 266 MHz) x86 shows the same effect.
Jocke
| |