Оператор переключения:
switch(i)
{
case 1:
doOne();
break;
case 2:
doTwo();
break;
case 3:
doThree();
break;
default:
doNone();
break;
}
См. Вопрос « Преобразование разницы между двумя значениями в миллисекунды » при переполнении стека.
Или используйте это:
static double diffclock(clock_t clock1,clock_t clock2)
{
double diffticks=clock1-clock2;
double diffms=(diffticks)/(CLOCKS_PER_SEC/1000);
return diffms;
}
В Windows вы можете использовать GetTickCount в миллисекундах.
Есть макрос CLOCKS_PER_SEC
, который поможет вам преобразовать тики в миллисекунды.
Существуют специальные API-интерфейсы для ОС, чтобы получить таймеры с высоким разрешением.
Вы можете запускать свою программу более одного раза ( например, 1000 раз) и измерьте это с помощью таймера с низким разрешением (например, некоторое количество секунд), а затем разделите полученное количество на количество запусков, чтобы получить среднее время (с более высоким разрешением).
Если вы используете ОС Unix, например Linux или Mac OS X , вы можете перейти в командную строку и использовать строку
time call-program
Команда time определяет, сколько времени выполняется любой командной строки принимает и сообщает вам об этом.
Я не знаю, есть ли что-то подобное для Windows, и как вы можете измерить миллисекунды внутри программы C / C ++.
В Win32 вы можете получить доступ к таймеру с высоким разрешением, используя QueryPerformanceFrequency и QueryPerformanceCounter (IMHO, которое следует предпочесть, возможно, с откатом на GetTickCount
). Вы можете найти пример в разделе «Содержимое сообщества» на сайте MSDN.