Как измерить время выполнения программы и количество памяти, которое она использует?

компьютеры программирование велоцераптор

Пишу на С++ в Dev-C++

Примечание:
>разве она не работает до завершения?
Конечно она работает до завершения. Но мне нужно знать сколько секунд (с точностью до 0.001с) прошло времени до этого самого завершения.
>можно просить дополнительно динамическую "на лету"
Да, память динамически выделятся/освобождается. Делается это много раз и уследить самому что там и как происходит на разных входных данных нереально. Нужно какое-то средство подсчета всей этой движухи.

Вот пример того что мне нужно
Сайт по спортивному программированию http://acm.timus.ru/
У каждой задачи есть таймлимит и ограничение на память. Когда им отправляешь условие на проверку, они присылают ответ: сколько твоя программулина работала, например 0.015с исколько памяти ей потребовалось, например 121Кб

Примечание:
Нормальная ссылка на то, как это должно выглядеть
http://acm.timus.ru/status.aspx?space=1&num=1025&author=84653

Примечание:
AndrewA
>то что тебе мешает самому замерить

Дык, в том и вопрос :) Мешает мне то, что я не знаю как это сделать.

Примечание:
>Нормальный вариант один: писать свой мини-дебаггер

Я не смогу изобрести велосипед. Мне нужен уже готовый.
Ответы:
ого ну и вопрос.. ну время.... разве она не работает до завершения?
а память.. чем больше переменных тем больше статической памяти.. + можно просить дополнительно динамическую "на лету"
Если это твоя программа, то что тебе мешает самому замерить разницу времени начала и остановки? да и посчитать память при создании объектов тоже можно.
В любом дистрибутиве Linux есть команда time [1] Ею и меряют.
#include <time.h>
Нормальный вариант один: писать свой мини-дебаггер, в нём ставить точку останова на вызовы функций, связанных с выделением памяти (если Windows) или на системные вызовы (если UNIX-подобное). Время работы тоже тривиально подсчитывается соответствующими вызовами. По истечении процесс надо убивать, если сам раньше не завершился. При использовании UNIX-подобных систем может быть удобнее задать лимиты с помощью setrlimit; хотя бы на память, а в некоторых системах (Linux к ним не относится) можно и на время. Не следует оценивать только время работы собственно программы (затраченное ей процессоорное время) - она может и повиснуть без загрузки процессора. Надо и просто прошедшее время с начала работы программы считать, или вообще только его и считать. Время лучше учитывать в отдельном потоке (нити) в вашей тестирующей программе. Убедитесь, что ваш отладчик не сильно тормозит тестируемую программу, а если всё же тормозит, надо как-то это учитывать и добавлять время.
по поводу памяти:
внутри программы GetProcessWorkingSetSize
для тимуса пользуюсь вариантом который предложил Kipp


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.