一直以我对std::priority_queue的感觉是性能不高,因为公司一个产品在实现定时器队列的时候使用了std::multimap,为什么不用std::priority_queue,可能是由于性能不高
吧,随便下了一个结论就没有深入去思考了。
今天有时间做了一个实验,结果出乎所料,以下是测试结果:
从上面的测试结果可以得出以下的结论:
1)在push操作的时候map和set的实现效率是一样的,三者中priority queue的效率最好;
2)在pop操作的时候map和set的实现效率是一样的,当测试的规模在100000以下的时候priority queue的效率还是最好的,当大于100000的时候priority queue的效率开始变差
3)总结论:由于在产品运行的场景中队列中存储的对象个数在100000以下,所以使用std::multimap问题不大,但是从这里的分析并结合使用中的方便性来看,选择priority queue似乎是一个更好的选择。