我在不同的智能手机上执行用C编写的功能。智能手机是iPhone 6,iPhone 7,Nexus 5和三星Galaxy S7。
对于android我使用以下函数来获取时间。
typedef struct Timer {
unsigned int totalRuns;
unsigned long long totalTime;
struct timespec startTime;
struct timespec stopTime;
} Timer;
Void start(Timer* timer){
clock_gettime(CLOCK_MONOTONIC, &(timer->startTime));
}
void stop(Timer* timer){
clock_gettime(CLOCK_MONOTONIC, &(timer->stopTime));
timer->totalTime += (timer->stopTime.tv_sec - timer->startTime.tv_sec)*1000000000LL + timer->stopTime.tv_nsec - timer->startTime.tv_nsec;
timer->totalRuns++;
}
在iOS中,我使用以下代码片段调用Objective C中的计时函数。
NSDate *start, *stop;
NSTimeInterval executionTime = 0;
start = [NSDate date];
//Function to be timed
stop = [NSDate date];
executionTime = [stop timeIntervalSinceDate:start];
在Nexus 5和iPhone 6中使用相同的代码显示比iPhone 7和三星Galaxy S7更快的执行时间,但我觉得应该是另一种方式,因为新手机更快。造成这种差异的原因是什么?或者有没有办法在所有4个设备上统一计时?