2013-09-02 2 views
1

Я создаю логистический проект на C++, где мне нужно сравнить время выполнения решателя, которое я создал с помощью решения с открытым исходным кодом.Остановить программу с таймером

Итак, мне нужно остановить решатель, который я создал, если он будет работать дольше, чем с открытым исходным кодом.

Проблема в том, что я ничего не нашел о таймере, который останавливает фактическую исполняемую программу.

Кто-нибудь может мне помочь?

+0

Если вы хотите сравнить время выполнения двух, то ясно, что оба они должны выполняться до завершения ... С другой стороны, если вы просто хотите запустить до тех пор, пока первый не завершится, вам нужно будет использовать несколько потоков , а затем «убить», какая нить не завершилась. Это немного сложно. Вы действительно хотите это сделать? Учтите, что вам также, вероятно, необходимо обеспечить правильный результат. –

+2

C++ 11 или ранее? В противном случае вы используете boost? В противном случае Windows или Linux (или OSX)? – thokra

+0

Вы думаете, что вы одновременно запускаете решателей на том же компьютере, что и часть той же программы? Не кажется мне честным испытанием. Внедрите одно решение и контрольный показатель, затем другой и контрольный. Возможно, вам нужна дополнительная информация о вашей проблеме ... – dwxw

ответ

3

Вы можете просто запустить будущее, которое будет спать в течение заданного времени, а затем вызвать std :: exit.

+0

Спасибо! Это простая и отличная идея :) – TwistAndShutter

0

Без дополнительной информации о том, что вы решаете, я предлагаю запустить как в серии эталонных тестов, используя несколько целей для решения, если это возможно, так как они могут выполняться по-разному в разных ситуациях. Запуск обоих в строгих тестах поможет убедиться, что ваши результаты действительны. Также, даже если ваш решатель займет больше времени, зная, что разница во времени поможет вам оптимизировать его.

Смежные вопросы