|
0 / 0 / 0
Регистрация: 13.06.2017
Сообщений: 56
|
|
Обнуление времени подсчёта выполнения кода27.12.2019, 09:22. Показов 3643. Ответов 33
Есть DLL, которая подсчитывает время выполнения exe файла.
Как сделать, чтобы он начинал с 0 считать после каждого запуска exe файла? Если после первого запуска exe, он не останавливается и продолжает накапливать время. Обнуляется только после полного закрытия программы. Код DLL: #define _CRT_SECURE_NO_WARNINGS 1 //Для совместимости с классическими функциями #include "DLL.h" //Подключение библиотек #include <iostream> #include <time.h> #include <string> #include <windows.h> #include <stdio.h> #if _MSC_VER >= 1200 //Оценка целочисленности литерал #pragma comment(lib,"winmm.lib") //Подключение библиотеки winmm.lib #endif using namespace std; DOUBLE appSeconds() //Внутренняя процедура для отслеживания времени { static DWORD i = timeGetTime(); //Извлечение системного времени в милисекундах static DOUBLE c = 0.0; //Инициализация переменной типа double DWORD t = timeGetTime(); c += (t - i)*(1. / 1000.); //Подсчёт времени i = t; //Присвоение переменной return c; } LPCTSTR TimeCalc(int nTotal) //Подсчёт времени и перевод в секунды { static TCHAR r[100] = { 0 }; //Инициализация списка int m = nTotal / 60; //Инициализация переменной минусы int s = nTotal % 60; //Инициализация переменной секунды int h = m / 60; //Инициализация переменной часы m = m % 60; if (!h) { if (!m) wsprintf(r, TEXT("%02d"), s); //Перевод из int в tchar else wsprintf(r, TEXT("%02d:%02d"), m, s); } else wsprintf(r, TEXT("%2d:%02d:%02d"), h, m, s); return r; } extern "C" __declspec(dllexport) double StartTimer() //Начальная точка отсчёта времени { DOUBLE StartTime = 0.0; StartTime = appSeconds(); //Инициализация начальной точки времени return StartTime; } extern "C" __declspec(dllexport) void AllTime(double StartTime) //Конечная точка отсчёта времени и вывод данных { DOUBLE EndTime = 0.0; //Инициализация переменной и присвоение 0.0 EndTime = appSeconds() - StartTime; //Инициализация конечной точки времени и получение затрачего времени char buf[100] = ""; //Инициализация строки sprintf_s(buf, "Result: %.4f", EndTime); //Перевод из double в char MessageBox(NULL, buf, "Time", //Вывод затраченного времени в MessageBox MB_OK | MB_ICONINFORMATION | MB_SETFOREGROUND | MB_SYSTEMMODAL); if (EndTime < 1) { MessageBox(NULL, "Too perfect to be true!", "Assessment", MB_OK); } else if (EndTime >= 1 && EndTime < 15) { MessageBox(NULL, "Good!", "Assessment", MB_OK); } else if (EndTime >= 15 && EndTime < 30) { MessageBox(NULL, "Not so bad", "Assessment", MB_OK); } else if (EndTime >= 30 && EndTime < 45) { MessageBox(NULL, "Worse", "Assessment", MB_OK); } else if (EndTime >= 45) { MessageBox(NULL, "Horrible", "Assessment", MB_OK); } }
0
|
|
| 27.12.2019, 09:22 | |
|
Ответы с готовыми решениями:
33
Оптимизация кода. Замер времени выполнения части кода. Счетчик времени выполнения кода Уменьшение времени выполнения кода |
|
0 / 0 / 0
Регистрация: 13.06.2017
Сообщений: 56
|
||||||||||||||||
| 27.12.2019, 16:16 [ТС] | ||||||||||||||||
|
Ругается на строку AllTime(tm); //Вызов экспортируемой функции (конец отсчёта, вывод значений)oleg-m1973,
Добавлено через 3 минуты Сама программа:
DLL.cpp
0
|
||||||||||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 27.12.2019, 16:16 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 13.06.2017
Сообщений: 56
|
|
| 27.12.2019, 16:18 [ТС] | |
|
oleg-m1973,
cfunc StartTimer; //Переменные для функции cfunc AllTime; Вот так
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||||||||
| 27.12.2019, 16:21 | ||||||||||||
0
|
||||||||||||
|
0 / 0 / 0
Регистрация: 13.06.2017
Сообщений: 56
|
||||||
| 27.12.2019, 16:40 [ТС] | ||||||
|
oleg-m1973, Пишет, что не может определить
0
|
||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||||
| 27.12.2019, 16:42 | ||||||||
Сообщение было отмечено ARTFIRE как решение
Решение
1
|
||||||||
|
0 / 0 / 0
Регистрация: 13.06.2017
Сообщений: 56
|
|
| 27.12.2019, 16:52 [ТС] | |
|
oleg-m1973,
Это я туплю про DLL ,сори Ошибка вылетает критическая
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 27.12.2019, 16:54 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 13.06.2017
Сообщений: 56
|
|||||||||||
| 27.12.2019, 16:57 [ТС] | |||||||||||
|
Да
Вот DLL.cpp
DLL.h
0
|
|||||||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 27.12.2019, 17:12 | ||
|
Там видно, какие функции экспортируется. А сначала проверь, что она вообще загружается - hLib != NULL
0
|
||
|
0 / 0 / 0
Регистрация: 13.06.2017
Сообщений: 56
|
|
| 27.12.2019, 17:19 [ТС] | |
|
oleg-m1973,
Это и проверяется если её нету, она ругнёться Добавлено через 4 минуты Нашёл проблему Программа запускается. Добавлено через 24 секунды Но все ровно выводит те же значения, что и были.
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 27.12.2019, 17:20 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 13.06.2017
Сообщений: 56
|
||||||
| 27.12.2019, 17:26 [ТС] | ||||||
|
Да, помогло
Выводит верно Спасибо большое) Но проблема в другом Переменную EndTime, теперь всегда отображает "Horrible" > 45 сек Как можно подправить?
0
|
||||||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|||||||
| 27.12.2019, 17:28 | |||||||
1
|
|||||||
| 27.12.2019, 17:28 | |
|
Определение времени выполнения кода Вычисление времени выполнения куска кода
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|