I try to measure an exact time and have tried ... but with a "sleep (1) / usleep (1000)" I do not get what I expect.
Here my test code and the result:
SysDate s; // Contains:
// unsigned long long startM;
// unsigned long long endM;
mach_timebase_info_data_t info;
kern_return_t KernelReturnCodes; // int
// Example 1
double res;
KernelReturnCodes = mach_timebase_info(&info); // for debug
s.startM = mach_absolute_time();
sleep(1);
s.endM = mach_absolute_time();
res = mach_elapsed_time(s.startM, s.endM) / 1000000.0;
printf( "\n1:----------\n\t%f seconds\n", res / 1000);
// Example 2
double res2;
unsigned long long start;
unsigned long long end;
KernelReturnCodes = mach_timebase_info(&info); // Not necessary / unnecessary
start = mach_absolute_time();
sleep(1);
end = mach_absolute_time();
res2 = mach_elapsed_time(start, end) / 1000000.0;
printf( "\n2:----------\n\t%f seconds\n", res2 / 1000 );
// Example 3
double res3;
KernelReturnCodes = mach_timebase_info(&info); // Not necessary / unnecessary
s.startM = mach_absolute_time();
usleep(1000);
s.endM = mach_absolute_time();
res3 = mach_elapsed_time(s.startM, s.endM) / 1000000.0;
printf( "\n3:---1000---\n\t%f seconds\n", res3);
// Example 4
double res4;
start = 0L;
end = 0L;
KernelReturnCodes = mach_timebase_info(&info); // Not necessary / unnecessary
start = mach_absolute_time();
usleep(1000);
end = mach_absolute_time();
res4 = mach_elapsed_time(start, end) / 1000000.0;
printf( "\n4:---1000---\n\t%f seconds\n", res4);
// Example 5
double res5;
KernelReturnCodes = mach_timebase_info(&info); // Not necessary / unnecessary
s.startM = mach_absolute_time();
usleep(900);
s.endM = mach_absolute_time();
res5 = mach_elapsed_time(s.startM, s.endM) / 1000000.0;
printf( "\n5:----900---\n\t%f seconds\n", res5);
// Example 6
double res6;
start = 0L;
end = 0L;
KernelReturnCodes = mach_timebase_info(&info); // Not necessary / unnecessary
start = mach_absolute_time();
usleep(900);
end = mach_absolute_time();
res6 = mach_elapsed_time(start, end) / 1000000.0;
printf( "\n6:----900---\n\t%f seconds\n", res6);
// Example 7
double res7;
KernelReturnCodes = mach_timebase_info(&info); // Not necessary / unnecessary
s.startM = mach_absolute_time();
usleep(815);
s.endM = mach_absolute_time();
res7 = mach_elapsed_time(s.startM, s.endM) / 1000000.0;
printf( "\n7:----815---\n\t%f seconds\n", res7);
// Example 8
double res8;
start = 0L;
end = 0L;
KernelReturnCodes = mach_timebase_info(&info); // Not necessary / unnecessary
start = mach_absolute_time();
usleep(815);
end = mach_absolute_time();
res8 = mach_elapsed_time(start, end) / 1000000.0;
printf( "\n8:----815---\n\t%f seconds\n", res8);
/* -------------------------->> output: 1:---------- 1.004597 seconds // Almost what I expect 2:---------- 1.000097 seconds 3:---1000--- 1.252561 seconds 4:---1000--- 1.252341 seconds 5:----900--- 1.135227 seconds 6:----900--- 1.127429 seconds 7:----815--- 0.902179 seconds 8:----815--- 1.021522 seconds (lldb) <<--------------------------*/ what is wrong?
Thank you for each tip
Aucun commentaire:
Enregistrer un commentaire