kcachegrind を使用してデバッグ モードでコードを実行すると、プログラムのボトルネックは 2 つのベクトルが比較されるポイントであることがわかりました。
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 のおかげで、最適化モードでコンパイルすることにより、パフォーマンスがさらに向上したようです。