У меня проблема с использованием clock () в OSX.
Я просто хочу показать время, прошедшее с момента запуска моей программы.
Дело в том, что когда я делю структуру clock_t на CLOCKS_PER_SEC, я получаю странные результаты.
Запуск моей программы в течение 10 секунд покажет 1,0.
CLOCKS_PER_SEC установлен в моей системе на 1 000 000.
Вот пример моего кода:
//startTime = clock() at the start of the program
//This is called in each program loop
elapsedTime = (double)(clock() - startTime)/CLOCKS_PER_SEC
Если я делаю elapsedTime * 10, я получаю точное значение в секундах.
Я не сплю и не жду во время выполнения программы.
Любая помощь в понимании того, что происходит, будет очень признательна.
РЕДАКТИРОВАТЬ:
Хорошо, я исправил приведение, но это не меняет того факта, что если я запускаю программу в течение 10 секунд, я получаю 1,0, 1 секунда — 0,1. Это то, что я не понимаю. Мой CLOCKS_PER_SEC похож на CLOCKS_PER_TEN_SEC.
Я думаю, что ваш актерский состав находится не в том месте, поэтому вы получаете целочисленное деление. Попробуй это:
elapsedTime = (double)(clock() - startTime)/CLOCKS_PER_SEC;
РЕДАКТИРОВАТЬ:
Также обратите внимание, что в большинстве систем clock()
измеряет процессорное время Может быть, вы не используете столько процессорного времени, сколько думаете.
переместите ваш состав внутрь первой круглой скобки:
elapsedTime = ((double)(clock() - startTime)/CLOCKS_PER_SEC)
Сейчас clock() -startTime
становится двойным, заставляя CLOCKS_PER_SEC быть также значением с плавающей запятой, и вы получите результат с плавающей запятой. В противном случае это целочисленное деление, и вы получите только целочисленные результаты.