resolut1123
@resolut1123
Студент

Почему не считает время работы функции?

В задании нужно посчитать затраченное время на сортировку, для каждой из сортировок создал свою функцию, которая возвращает время.
#include <chrono>
int insert(int*, int kol);
int main()
{
    ....
    cout << "Затраченное время - " << insert(mas, kol) << endl;
}
int insert(int* mas, int kol)
{
	auto begin = std::chrono::steady_clock::now();
	for (int i = 1; i < kol; i++)
	{
		if (mas[i] < mas[i - 1]) {
			swap(mas[i], mas[i - 1]);
			i = 0;
		}
	}
	auto end = std::chrono::steady_clock::now();
	auto elapsed_ms = std::chrono::duration_cast<std::chrono::milliseconds>(end - begin);
	return elapsed_ms.count();
}
И вот таким образов результат всегда 0, каким бы методом замера времени не пользовался, но если сделать замер вывода "hello world" без функций то результат есть, как исправить?
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Компилятор далеко не дурак - он видит, что результат работы функции никуда в итоге не идет, и просто выкидывает ненужный код, отсюда и получается ноль. Более того, он может также сосчитать значения заранее, еще во время компиляции программы, и просто брать их из памяти.

Так что вам надо данные брать со стандартного ввода (или файла), а после обработки обязательно куда-то девать - в файл, или на стандартный вывод.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы