前提・実現したいこと
vectro.atを使用するより、ポインタを使って要素へアクセスした方が遥かに速いのですが、
at以外の方法で何か一行の記述で高速に要素にアクセスできる方法はないのでしょうか。
もし知っていたら共有していただけないでしょうか。
以上、よろしくお願いします。
該当のソースコード
#include <iostream> #include <vector> #include <time.h> using namespace std; const int NUM_ELEMENTS = 1000; const int NUM_ROOP = 100000; int main() { vector<int> vector_int_at(NUM_ELEMENTS); vector<int> vector_int_pointer(NUM_ELEMENTS); clock_t start = clock(); for (int j = 0; j < NUM_ROOP; j++) { for (int i = 0; i < NUM_ELEMENTS; i++) { vector_int_at.at(i) = 100;//atを使って配列にアクセス } } clock_t end = clock(); // 終了時間 std::cout << "duration = " << (double)(end - start) / CLOCKS_PER_SEC << "sec.\n"; start = clock(); for (int j = 0; j < NUM_ROOP; j++) { int* p = &vector_int_pointer[0]; for (int i = 0; i < NUM_ELEMENTS; i++) { *p= 100;//要素iを100にする p++;//次の配列に進む。 } } end = clock(); // 終了時間 std::cout << "duration = " << (double)(end - start) / CLOCKS_PER_SEC << "sec.\n"; return 0; }
出力結果
duration = 1.096sec.
duration = 0.16sec
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/05 08:29