С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
 Аватар для gromo
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225

Замерить время вычислений

20.01.2014, 19:03. Показов 2746. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.
Есть ли способ замерить продолжительность процесса вычислений, детали которых скрыты?
Есть объект, который производит продолжительное вычисление, и нужно как-то вывести это на прогресс-бар. Никакие промежуточные этапы расчетов, куда можно было бы "вклиниться" недоступны.
Может быть можно это как-то по загруженности CPU вывести или еще что-то. (Решение через Qt приветствуются )
Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.01.2014, 19:03
Ответы с готовыми решениями:

Замерить время?
Подскажите пожалуйста, как замерить время выполненияи нструкции вплоть до наносекунд на Borland C++ 3.1 и только на етом компиляторе....

Как замерить время работы функции?
функция time не подходит, потому что нужна точность хотя бы до 1 милисекунды.

Unix timestamp замерить время работы программы
Как можно с помощью unix timestamp замерить время работы программы в секундах (с++)?

11
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.01.2014, 19:15
Цитата Сообщение от gromo Посмотреть сообщение
Есть ли способ замерить продолжительность процесса вычислений, детали которых скрыты?
Для того, чтобы замерить время вычислений, детали вычислений не нужны. Нужно знать точки начала и конца вычислений. Есть такие?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.01.2014, 19:19
Существует std::chrono (C++11) или наследие С - time_t, time(0), ...
Пример использования chrono:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
#include <iterator>
#include <chrono>
 
using std::chrono::duration_cast;
using std::chrono::microseconds;
using std::chrono::steady_clock;
 
int main(){
    std::vector<int> vec(10000000);
    steady_clock::time_point start = steady_clock::now();
    auto max = *std::max_element(vec.begin(),vec.end());
    vec.erase(
        std::remove_if(
            vec.begin(), vec.end(),
            std::bind2nd(
                std::equal_to<int>(), max)
            )
        ,
        vec.end()
    );
    steady_clock::time_point end = steady_clock::now();
 
    std::cout << "First: "
              << duration_cast<microseconds>(end - start).count() << std::endl;
 
    // *************************************************************************
    std::vector<int> vec2(10000000);
    start = steady_clock::now();
    vec2.erase(
        std::remove_if(
            vec2.begin(), vec2.end(),
            std::bind2nd(
                std::equal_to<int>(),*std::max_element(vec2.begin(),vec2.end())
            )
        ),
        vec2.end()
    );
    end = steady_clock::now();
 
    std::cout << "Second: "
              << duration_cast<microseconds>(end - start).count() << std::endl;
}
0
 Аватар для gromo
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
20.01.2014, 19:22  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
Для того, чтобы замерить время вычислений, детали вычислений не нужны
Простите, я не так выразился. Нужно вывести на прогресс-бар, например, в процентном соотношении - сколько осталось еще до конца. Все что я знаю - так это найти какое-нибудь повторяющееся событие в процессе вычислений и от него уже скакать. Но этот процесс скрыт.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.01.2014, 19:27
gromo, можно вычислить процентное соотношение от количества итераций, если они схожи по сложности.
0
 Аватар для gromo
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
20.01.2014, 19:34  [ТС]
Цитата Сообщение от MrGluck Посмотреть сообщение
можно вычислить процентное соотношение от количества итераций, если они схожи по сложности
В том то и дело, что "итерация" одна - обработка большого файла.
Возможно в будущем нужна будет возможность обработки нескольких файлов, тогда проблем не будет. А вот как с одним - не знаю.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.01.2014, 19:36
Цитата Сообщение от gromo Посмотреть сообщение
Но этот процесс скрыт.
И насколько скрыт? Кода нет?

Добавлено через 1 минуту
Цитата Сообщение от gromo Посмотреть сообщение
обработка большого файла
Код обработки есть? В чём заключается обработка?
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.01.2014, 19:39
Цитата Сообщение от gromo Посмотреть сообщение
В том то и дело, что "итерация" одна - обработка большого файла.
А можно сказать, что количество обработанных строк ко всем примерно соотносится как время обработки этих же строк к общему времени?
Вообщем я клоню к тому, чтобы узнать размер файла и выводить процентное соотношение обработанного размера.

Добавлено через 42 секунды
Все равно пока что условие размыто - что делаем со строками? Сейчас это сферический кот в вакууме.
0
 Аватар для gromo
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
20.01.2014, 19:46  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
Код обработки есть? В чём заключается обработка?
C++
1
2
3
4
5
6
7
8
9
10
// . . .
std::string line;
while( std::getline(is, line) )  // Построчно считываем числа
          os << processNumber(line, srcBase, dstBase, format) << "\n"; // и переводим их в другую сист. счисления. 
 
// processNumber() очень продолжительная операция
 
        is.close();
        os.close();
// . . .
Добавлено через 2 минуты
Это уже код функции-члена конвертирующего класса и туда подмешивать замеряющий код а потом еще и как-нибудь возвращать его - не есть хорошо. Убьем интерфейс функции, класса, да и сложность увеличится. Не вариант короче...
0
 Аватар для TheFox
131 / 67 / 10
Регистрация: 13.05.2013
Сообщений: 437
20.01.2014, 19:52
Выводи прогресс бар как попало, и виси на 99% процентах до окончания вычислений
0
20.01.2014, 19:55

Не по теме:

Цитата Сообщение от TheFox Посмотреть сообщение
Выводи прогресс бар как попало, и виси на 99% процентах до окончания вычислений
Windows way

0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
20.01.2014, 19:58
Если бы очень нужно было, то посчитал бы количество строк в файле, а после обработки каждой строки сделал бы высылку сигнала.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.01.2014, 19:58
Помогаю со студенческими работами здесь

Как с точностью до микросекунд замерить время выполнения функции?
Товарищи, подскажите, как с точностью до микросекунд замерить время выполнения некоторой функции?

Организация вычислений во время ввода данных
Дано натуральное число. Верно ли, что произведение его цифр меньше а, а само число делить на в?

OpenMP. Возможность неблокировки UI на время вычислений
насколько я понял OpenMP хорошо распараллеливает те участки программы, где ведется обработка больших массивов данных. можно ли как нибудь...

Организация вычислений во время ввода данных
Известны оценки каждого из учеников класса по физике. Посчитать количество пятерок, количество четверок, количество троек и количество...

Организация вычислений во время ввода данных
Известны оценки каждого из учеников класса по физике. Посчитать количество пятерок, количество четверок, количество троек и количество...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru