微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mongocxx如何更快地从光标访问视图

如何解决Mongocxx如何更快地从光标访问视图

我有一个opencv代码,它需要运行得比opencv中的所有循环都快得多。这就是为什么我将大多数进程添加数据库中的原因,但是当一切都非常快时,根据opencv代码,从光标访问视图就很慢。

我想从光标更快地到达视图。还有其他解决方法吗? 例如,我可以编写一个函数或其他东西使mongocxx返回直接视图给我吗?

我做了以下操作。我与他们经过的时间分享操作。如果可以的话,我会很高兴。

    void MongoDB::SecondPointIteration(cv::KeyPoint&keypoints,SecondIterParams& secondIterParams ){

auto start1 = std::chrono::steady_clock::Now(); 

    secondParams = secondIterParams;  
    mongocxx::pipeline secondIterPipeline = setSorgu();
    mongocxx::cursor cursor = features.aggregate(secondIterPipeline,mongocxx::options::aggregate{});

auto end1  = std::chrono::steady_clock::Now();
auto time = std::chrono::duration_cast<std::chrono::microseconds>(end1-start1).count();
std::cout<<"2.1:   \t"<< time<<"ms"<<std::endl;
    
auto start3 = std::chrono::steady_clock::Now(); 
    for(auto&& doc : cursor) {      
    auto end3  = std::chrono::steady_clock::Now();
    auto time3 = std::chrono::duration_cast<std::chrono::microseconds>(end3-start3).count();
    std::cout<<"2.2.1:   \t"<< time3<<"ms"<<std::endl;

    auto start2 = std::chrono::steady_clock::Now();
        ...
        keypoints.response = doc["_id"]["response"].get_double().value; 

    auto end2  = std::chrono::steady_clock::Now();
    auto time2 = std::chrono::duration_cast<std::chrono::microseconds>(end2-start2).count();
    std::cout<<"2.2.2:   \t"<< time2<<"ms"<<std::endl;

    }
auto end3  = std::chrono::steady_clock::Now();
auto time3 = std::chrono::duration_cast<std::chrono::microseconds>(end3-start3).count();
std::cout<<"2.2:   \t"<< time3<<"ms"<<std::endl;  


}
mongocxx::pipeline  MongoDB::setSorgu(){
    using namespace bsoncxx::builder::basic;
    mongocxx::pipeline secondIterPipeline{};

    ...

    secondIterPipeline.sort(make_document(kvp("_id.response",-1)));
    secondIterPipeline.limit(1);

    return secondIterPipeline;
}

经过的时间是通过匹配std :: cout来写的

1:      761ms
2.1:    80ms
2.2.1:          1150ms
2.2.2:          2ms
2.2:    1158ms

数字1代表opencv循环所花费的时间

我的数据库包含类似的数据,例如

    [{

  "keypoint": {
    "response": 0
  }
},{
  "keypoint": {
    "response": 0.0010120292427018285
  }
},{
  "keypoint": {

    "response": 0.0017831606091931462
  }
}]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。