個人的メモです
- 検証方法はガバガバかもしれない。
vectorの要素にアクセスするには、[]演算子とat()の2通りがある。
- []演算子
- at()
一般的には[]演算子の方を使う。
なぜなら、at()はvectorの中のindexを全て見た上で、要素にアクセスするから。
[]は直接その要素にアクセスするので、パフォーマンスこちらの方が良い。
at()はその性質上デバッグする際に便利なので、開発時に使うものとい割り切った方がいいかもしれない。
速度比較したら、3倍くらい違った。
[]演算子とat()の速度比較を以下の方法で検証。
検証手順
- valという100000個のfloat型を用意し、その全てに0を格納。
- その状態から、100000回0番目の要素にアクセス
vector<float> vals;
vals.assign(100000, 0.0);
float start = ofGetElapsedTimef();
cout << "start:" << start << endl;
for(int i = 0; i < vals.size(); i++)
{
vals[0]; //or vals.at(0)
}
float end = ofGetElapsedTimef();
cout << "end:" << end << endl;
span = end - start;
cout << "実行時間:" << span << endl;
6回実施した平均の実行速度は以下。
[]演算子 | atメソッド |
---|---|
0.044165(ms) | 0.111919(ms) |