Hello All, I am facing an issue in use of mach_absolute_time().
mach_absolute_time() gives drift even when NTP timing update is on. Please see my code below: #import <Cocoa/Cocoa.h> #import <mach/mach_time.h> nt main(int argc, char *argv[]) { uint64_t nowTime = mach_absolute_time(); uint64_t drift = 0; for (int i=0;i<1000;i++) { sleep(5); uint64_t current_Time = mach_absolute_time(); uint64_t differenceTime = (current_Time - nowTime)*1E-6; drift = differenceTime - (i+1)*5000; NSLog(@"Elapsed Time =%lld",differenceTime); NSLog(@"drift =%lld",drift); } return 1; //return NSApplicationMain(argc, (const char **) argv); } Expected Results: I expected to see zero drift in the print. After several runs, the drift kept on increasing Actual Results: Below are actual results 009-06-04 17:49:49.936 TestMachSleep[3275:10b] Elapsed Time =5000 2009-06-04 17:49:49.939 TestMachSleep[3275:10b] drift =0 2009-06-04 17:49:54.940 TestMachSleep[3275:10b] Elapsed Time =10004 2009-06-04 17:49:54.942 TestMachSleep[3275:10b] drift =4 2009-06-04 17:49:59.943 TestMachSleep[3275:10b] Elapsed Time =15007 2009-06-04 17:49:59.944 TestMachSleep[3275:10b] drift =7 2009-06-04 17:50:04.947 TestMachSleep[3275:10b] Elapsed Time =20011 2009-06-04 17:50:04.950 TestMachSleep[3275:10b] drift =11 2009-06-04 17:50:09.954 TestMachSleep[3275:10b] Elapsed Time =25018 2009-06-04 17:50:09.965 TestMachSleep[3275:10b] drift =18 2009-06-04 17:50:14.976 TestMachSleep[3275:10b] Elapsed Time =30040 2009-06-04 17:50:14.991 TestMachSleep[3275:10b] drift =40 2009-06-04 17:50:20.003 TestMachSleep[3275:10b] Elapsed Time =35068 2009-06-04 17:50:20.004 TestMachSleep[3275:10b] drift =68 2009-06-04 17:50:25.012 TestMachSleep[3275:10b] Elapsed Time =40076 2009-06-04 17:50:25.031 TestMachSleep[3275:10b] drift =76 2009-06-04 17:50:30.041 TestMachSleep[3275:10b] Elapsed Time =45105 2009-06-04 17:50:30.046 TestMachSleep[3275:10b] drift =105 2009-06-04 17:50:35.064 TestMachSleep[3275:10b] Elapsed Time =50129 2009-06-04 17:50:35.073 TestMachSleep[3275:10b] drift =129 2009-06-04 17:50:40.091 TestMachSleep[3275:10b] Elapsed Time =55156 2009-06-04 17:50:40.092 TestMachSleep[3275:10b] drift =156 2009-06-04 17:50:45.104 TestMachSleep[3275:10b] Elapsed Time =60169 2009-06-04 17:50:45.112 TestMachSleep[3275:10b] drift =169 2009-06-04 17:50:50.133 TestMachSleep[3275:10b] Elapsed Time =65198 2009-06-04 17:50:50.136 TestMachSleep[3275:10b] drift =198 2009-06-04 17:50:55.137 TestMachSleep[3275:10b] Elapsed Time =70202 2009-06-04 17:50:55.138 TestMachSleep[3275:10b] drift =202 2009-06-04 17:51:00.147 TestMachSleep[3275:10b] Elapsed Time =75212 2009-06-04 17:51:00.160 TestMachSleep[3275:10b] drift =212 I need millisecond accuracy to send time to server after certain activity has been done. I understand that sleep is not millisecond accurate but I was not expecting to see a progressively increasing drift. _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com