Линейный поиск через вектор [i] yealds 0ms response, тогда как vector.at (i) yealds time

Я должен добавить: я звоню по моему линейному поиску 15 000 раз, и самый низкий диапазон, который я ищу, составляет до 50 000 с каждой итерацией. Таким образом, имеется смысл 15 000 * 50 000 просмотров на первой итерации. Это должно занять больше времени, чем 0 мс.

У меня есть этот основной линейный поиск:

bool linearSearch(std::vector<int>&primes, int number, int range) {

    for (int i = 0; i < range; i++) {
        if (primes[i] == number)
            return true;
    }
    return false;
}

Я беру время, используя:

void timeLinearSearch(std::vector<int>& primes) {
    clock_t start, stop;
    size_t NRND = 15000;    //  15000 primes per clock

    for (int N = 50000; N <= 500000; N += 50000)    // increase by 50k each iteration
    {
        for (int repeat = 0; repeat < 5; repeat++) {
            start = clock();
            for (int j = 0; j < NRND; j++) {
                linearSearch(primes, rand(), N);
            }
            stop = clock();
            std::cout << stop - start << ", " << N << std::endl;
        }

    }
}

Проблема в том, что время составляет 0 мс. Вектор «простые числа» содержит около 600 000 элементов, поэтому поиск остается в пределах досягаемости.

В линейном поиске, если я изменю:

if(primes[i] == number)

чтобы:

if(primes.at(i) == number)

тогда я получаю время> 0 для поиска.

Я сравнил свой линейный поиск с primes.at (i) с std :: find () следующим образом:

for (int j = 0; j < NRND; j++) {
    std::find(primes.begin(), primes.begin() + N, rand());
}

и это примерно на 200 мс быстрее, чем мой .at () найти.

Почему мой поиск с помощью std :: vector [i] дает мне время 0 мс?

Ответы на вопрос(3)

Ваш ответ на вопрос