2015-05-16 3 views
0

У меня есть код C++ на C++ и я пытаюсь найти реальное прошедшее время. Я использую cplex.getTime(), но возвращает процессорное время (я запускаю его в системе UNIX). Мой первый вопрос: время CPU возвращается в секундах? То есть, это говорит 1500. Это означает 1500 секунд? Второй вопрос: есть ли способ получить реальное прошедшее время в cplex с помощью C++?Реальное прошедшее время в cplex

ответ

0

cplex.getTime() должно возвращать «прошедшее» время в секундах, но вам обычно нужно использовать настройку «Настенные часы». Более новые руководства не делают разницы очень ясными, но более старые руководства лучше в этом отношении. Например. в руководстве CPLEX 10 указано:

Параметр типа часов определяет, как измеряет значение показателя ILOG CPLEX . Время CPU по умолчанию наиболее подходит, когда используется только один процессор. Он сообщает, сколько времени процессор потратил , выполняя вычисления от имени вашего приложения. Для параллельного исполнения время процессора зависит от системы и обычно не отражает желаемый показатель. На некоторых параллельных системах он может измерять агрегат процессорного времени, т. Е. Сумму времени, используемого всеми процессорами. В других случаях может сообщать процессорное время только о одном процессе. Короче говоря, это может дать вам вводящую в заблуждение индикацию параллельной скорости.

Альтернативный тип, часы настенных часов, обычно более подходит для параллельных вычислений , поскольку он измеряет общее пройденное физическое время после начала операции. Когда несколько процессов активны, и , когда активны параллельные оптимизаторы, время настенных часов может быть большим , отличным от времени процессора.

Вы можете выбрать тип установки часов, в:

Interactive Optimizer, с набором команд clocktype я. Концерт Технология, с использованием метода IloCplex setParam (ClockType, i). Callable Библиотека с обычным CPXsetintparam (env, CPX_PARAM_CLOCKTYPE, i). Замените i значением 1, чтобы указать время процессора или 2, чтобы указать настенные часы.

В качестве альтернативы просто используйте стандартный вызов системной библиотеки, чтобы получить время начала и окончания и выполнить вычитание самостоятельно. Я сделал это много.

0

В C++, используйте следующий код:

IloNum start; 
start=cplex.getTime(); 
cplex.solve(); 
cplex.out() << "solution time=" << cplex.getTime()-start << endl; 
Смежные вопросы