动机很难解释,因此我举一个例子:假设您每秒收到大量样本,而您的任务是对它们进行分类。

我们也这样说:您有两个分类器: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)),并在剩余时间尽可能多的情况下运行慢速启发式结果。

10-02 21:27