使用 kcachegrind 并在调试模式下运行代码,我发现我的程序的瓶颈是比较两个向量的点。
if (v1 == v2) {
// DO
}
我怎样才能使它更有效率?这是否更好
if (v1[0] == v2[0]) {
if (v1 == v2) {
// DO
}
}
第一行将过滤一些无用的比较。
在此之前我尝试过
if (!v2.empty())
if (v1 == v2)
// DO
但是我发现它们几乎总是不空的。因此也包括了 empty() 的额外时间。
我不得不说向量的大小大多很小。2~4个元素。在极少数情况下,它们会扩展到 10 个。
更新: 感谢 Mats Petersson,似乎通过在优化模式下编译,有更多的性能改进。