crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Время выполнения программы/функции/цикла
RazrFalcon
  опции профиля:
сообщение 4.10.2010, 16:01
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Как лучше реализовать? Чтоб точно было.
Я знаю только как таймером, но я так понимаю он и сам будет подвисать при тяжелых вычислениях.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
2 страниц V   1 2 >  
Начать новую тему
Ответов (1 - 9)
Алексей1153
  опции профиля:
сообщение 4.10.2010, 18:39
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


уточни вопрос:
1) нужно задать время выполнения
2) нужно измерить время выполнения

наверное, 2

лично я всегда пользуюсь разностью тиков (под виндой - GetTickCount() , в Qt ещё не доводилось применять, поэтому кроссплатформенное решение не знаю. Но в любом компьютере должны быть часы :) )

Сообщение отредактировал Алексей1153 - 4.10.2010, 19:20
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 4.10.2010, 19:11
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Да, 2-е.
Часы это хорошо, супер точное время я могу получить так:
date +%M:%S.%N
что дает мне 07:22.227755156
7 мин 22 сек и оооочень много миллисекунд, тока это через консоль. А потом сделать разницу.
Если можно было бы из приложения послать и получить что то из терминала.
Это можно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 4.10.2010, 19:24
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


(кстати, GetTickCount тоже миллисекунды исповедует)

Цитата(RazrFalcon @ 4.10.2010, 22:11) *
Если можно было бы из приложения послать и получить что то из терминала.

а поподробнее - что ты хочешь получить и послать ? И с какой целью

Если для измерения времени передачи/приёма, то проще сделать так:
1) засекаешь начало времени
2) отправляешь условный сигнал
3) получатель отражает сигнал
4) ты его снова принимаешь, считаешь разницу времени, делишь её на 2
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 4.10.2010, 20:00
Сообщение #5


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


У меня убунту.
Надо послать в терминал date +%M:%S.%N , и получить что то типа 07:22.227755156 и все. Дальше и так понятно что делать.
Мне непонятно только как работать с самим терминалом из моего приложения. А посчитать я смогу :lol:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 4.10.2010, 21:54
Сообщение #6


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


RazrFalcon,
касательно времени работы программы в целом есть утилиты готовые.
time к примеру може посчитать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 4.10.2010, 22:14
Сообщение #7


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Цитата(kwisp @ 4.10.2010, 21:54) *
касательно времени работы программы в целом есть утилиты готовые.
time к примеру може посчитать

ЭЭЭм... это в кьюте самом или отдельные. Я хочу именно в коде у себя.
Просто не хочу создавать новую тему. Может щяс что то найду на тему как послать в консоль команду из проги.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Sokoloff
  опции профиля:
сообщение 4.10.2010, 22:51
Сообщение #8


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Цитата(RazrFalcon @ 4.10.2010, 23:14) *
Цитата(kwisp @ 4.10.2010, 21:54) *
касательно времени работы программы в целом есть утилиты готовые.
time к примеру може посчитать

ЭЭЭм... это в кьюте самом или отдельные. Я хочу именно в коде у себя.
Просто не хочу создавать новую тему. Может щяс что то найду на тему как послать в консоль команду из проги.

Посмотри в сторону функции gettimeofday.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 5.10.2010, 17:34
Сообщение #9


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Наверное не лучший вариант, но и только линуксовый. Но меня устраивает.
.срр
#include <QtCore/QCoreApplication>
#include <QProcess>
#include <QtDebug>

int main()
{
    int full;
    QString hour, min, sec, program;
    QStringList arguments;
    QProcess myProcess;
    program = "date";
    arguments << "+%k%n%M%n%S%n%N";
    myProcess.start(program, arguments);
    myProcess.waitForFinished();
    hour=myProcess.readLine();
    min=myProcess.readLine();
    sec=myProcess.readLine();
    full=hour.toInt()*3600+min.toInt()*60+sec.toInt();
    qDebug()<<full;
}
.pro
QT       += core

QT       -= gui

TARGET = terminal
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += main.cpp
Ну а дальше просто отнимаем до/после и все.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
alex977
  опции профиля:
сообщение 5.10.2010, 18:27
Сообщение #10


Активный участник
***

Группа: Участник
Сообщений: 310
Регистрация: 19.6.2008
Из: Россия, МО, г.Мытищи
Пользователь №: 206

Спасибо сказали: 77 раз(а)




Репутация:   8  


Класс QTime не подходит для этих целей?
Раскрывающийся текст
QTime QTime::currentTime () [static]
This is an overloaded function.

Returns the current time as reported by the system clock.

Note that the accuracy depends on the accuracy of the underlying operating system; not all systems provide 1-millisecond accuracy.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.11.2024, 5:13