我们正在开发一段代码,可以检查用户是否应该被允许在一段时间内进入某个扇区,我的一位同事创建了一个函数,在下面的代码中是isAllowed并包含几个比较,我拿了一个不同的方法是功能isAllowed2,它使用时间段之间的秒数.
起初我们毫不怀疑他的功能会更快,但实际运行代码并比较速度时却不是这样,即使差异是我们可以完全忽略的,我们也想知道为什么它是一个这"应该"更快,其实是慢.
考虑以下代码:
#include <iostream>
#include <chrono>
using namespace std;
using namespace std::chrono;
struct timing {
short hour;
short minute;
};
bool isAllowed(timing &from, timing &to, timing &actual) {
return !(((from.hour > to.hour && (actual.hour >= from.hour || actual.hour <= to.hour)) ||
(actual.hour >= from.hour && actual.hour <= to.hour)) &&
!(actual.minute > from.minute && actual.minute < to.minute));
}
long getSecs(short hour, short minutes) {
return (hour * 3600) + (minutes * 60);
}
bool …Run Code Online (Sandbox Code Playgroud)