动机很难解释,因此我举一个例子:假设您每秒收到大量样本,而您的任务是对它们进行分类。
我们也这样说:您有两个分类器:heuristicFast和heuristicSlow。因此,可以说,对于每个样本,您运行heuristicFast(),然后如果结果接近未定(假设分类器的[0.45,0.55]范围,其中0为1类,而1为2类),则运行更精确的heuristicSlow。
现在的问题是,这是实时系统,因此即使在对heuristicFast的调用的高性能返回返回[0.45,0.55]范围的情况下,我也要确保不会过载CPU(我正在使用线程)。
做到这一点的最佳方法是什么?
我最好的主意是为heuristicSlow设置条目数,然后如果条目数> number_of_cores / 2
则不输入它?
std::atomic<int> entrycount(0);
//...
if (classificationNotClear(result_heuristic_fast) && (entrycount<kMaxConcurrantCalls))
{
entrycount++;
final_result=heuristicSlow();
entrycount--;
}
else
final_result=result_heuristic_fast;
//...
最佳答案
更出色的解决方案:
根据不确定性对快速启发式结果进行排序(即abs(result-0.5)
),并在剩余时间尽可能多的情况下运行慢速启发式结果。