не измеряется?
Т.е я использую функции заг.файла chrono для того чтобы измерить скорость выполнения моих вариантов поиска, но всегда результат равен 0.
Заметка. Измеряю на массивах длиной 10, 100, 1000, 10000, 100000, 1000000. Поиск на массиве длиной "1000000" длится уже несколько секунд, поэтому слишком быстрого результата быть не может, как на массивах длиной 10, 100.
auto begin = std::chrono::steady_clock::now();
linearSearch(data, target);
auto end = std::chrono::steady_clock::now();
auto elapsed_ms = std::chrono::duration_cast<std::chrono::milliseconds>(end - begin);
std::cout << "Последовательный поиск " << size << " элементов занял " << elapsed_ms.count() << "." << std::endl;
begin = std::chrono::steady_clock::now();
std::cout << binarySearch(data, target) << std::endl;
end = std::chrono::steady_clock::now();
elapsed_ms = std::chrono::duration_cast<std::chrono::milliseconds>(end - begin);
std::cout << "Бинарный поиск " << size << " элементов занял " << elapsed_ms.count() << "." << std::endl;
Попробуй std::chrono::high_resolution_clock, возможно, у твоего таймера слишком низкое разрешение (~16 миллисекунд) для твоих измерений.
Спасибо, я сейчас изменил код, но, к сожалению, результат всё тот же. Выдаёт всегда 0.
Попробуй для начала в отладчике посмотреть, какое значение лежит в begin и end.
Пробывал. Выводил его на экран. Оно всегда есть и не равно 0. Но так выходит, что begin = end => begin - end = 0
Попробуй узнать разрешение для своего таймера. std::cout << (double) std::chrono::high_resolution_clock::period::num / std::chrono::high_resolution_clock::period::den << "\n";
Но я его выводил (значение функции), разве компилятор тогда себе позволяет функцию не выполнять?
Окей, как минимум в первом случае ничего не выводится
Обсуждают сегодня