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

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

20.01.2014, 19:03. Показов 2777. Ответов 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
5500 / 4895 / 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
5500 / 4895 / 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
5500 / 4895 / 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru