Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать время работы пограммы? Например, алгоритма сортировки 
:(
    Опции темы
EvgenZ
Дата 15.8.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Freedom in me
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 3.8.2006

Репутация: 1
Всего: 11



 если не ошибаюсь, функция clock() возвращает целочисленное значение типа clock_t – это время, прошедшее с момента запуска программы. а мне нужно системное время ящика  smile , или я чего-то не понимаю  smile 

Это сообщение отредактировал(а) EvgenZ - 15.8.2006, 11:45


--------------------
<удалено администрацией форума>
PM MAIL   Вверх
Dragon
Дата 15.8.2006, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 10.8.2006
Где: Киев

Репутация: нет
Всего: нет



Цитата

Не преимущество, а дубовизна скорее. Там до сих пор синхронизуются с помощью файлов?    

Имеешь в виду обмен данными между процессами? Есть функция mmap - от memory map, которая с опциями MAP_SHARED | MAP_ANONYMOUS не создает backend файла.

Кроме того, расширение понятия файловой системы, например /proc - это плюс, а не минус - т.к. эти "файлы" только отображаются как часть файловой системы, на самом деле их там и не существует. Это унификация доступа к информации.

По сабжу:
Код

class ExecutionTimer
{
public:
    ExecutionTimer(bool _autoStart = true) 
    { gettimeofday(&initializationTime, 0);}
    
    timeval ElapsedTime() const
    {
        timeval _currentTime, _elapsedTime; 
        
        gettimeofday(&_currentTime, 0);
        timersub(&_currentTime, &initializationTime, &_elapsedTime);
        
        return _elapsedTime;
    }
    
    inline timeval StartupTime() const { return initializationTime; }

private:
    timeval initializationTime;
};

class SpecificTimer : public ExecutionTimer
{
public:
    ~SpecificTimer()
    {
        timeval elapsedTIme = ElapsedTime();
        using std::extended_string;
        
        extended_string _elapsedTime = extended_string("Execution time: ") + elapsedTIme.tv_sec + '.'
            + std::convert_tostr<6, '0'>(elapsedTIme.tv_usec); _elapsedTime += " seconds...\n";
        
        // Application chouses its own way to show message
        cout<<_elapsedTime<<endl;
    }
};

int main()
{
    SpecificTimer _timer;
    for(std::size_t i = 0;i < 10;i++) usleep(100000);
    
    return 0;
}



Вот общая реализация для Linux - но совсем несложно портировать. ExecutionTimer в принципе дает все необходимое в плане расчета времени. Но для debug целей приложение может создать производный класс с деструктором, выводящим расчитанное время в приемлемой форме - т.е. в консоль, в log файл, хоть MessageBox'ом smile

Т.е. достаточно создать объект в начале расчетного интервала, а по выходе из области видимости по уничтожении объекта автоматически будет отображено время.


Это сообщение отредактировал(а) Dragon - 15.8.2006, 13:15
PM MAIL ICQ   Вверх
Бор
Дата 26.8.2006, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 25.7.2006

Репутация: нет
Всего: нет



Цитата

The GetTickCount function retrieves the number of milliseconds that have elapsed since Windows was started. 

DWORD GetTickCount(VOID)
 

Parameters

This function has no parameters. 

Return Values

If the function succeeds, the return value is the number of milliseconds that have elapsed since Windows was started. 

Remarks

The elapsed time is stored as a DWORD value. Therefore, the time will wrap around to zero if Windows is run continuously for 49.7 days. 
Windows NT: To obtain the time elapsed since the computer was started, look up the System Up Time counter in the performance data in the registry key HKEY_PERFORMANCE_DATA. The value returned is an 8 byte value. 


И жизнь покажется раем

 
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0570 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.