clock () и CLOCKS_PER_SEC в OSX 10.7

У меня проблема с использованием 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.

1

Решение

Я думаю, что ваш актерский состав находится не в том месте, поэтому вы получаете целочисленное деление. Попробуй это:

elapsedTime = (double)(clock() - startTime)/CLOCKS_PER_SEC;

РЕДАКТИРОВАТЬ:

Также обратите внимание, что в большинстве систем clock() измеряет процессорное время Может быть, вы не используете столько процессорного времени, сколько думаете.

2

Другие решения

переместите ваш состав внутрь первой круглой скобки:

 elapsedTime = ((double)(clock() - startTime)/CLOCKS_PER_SEC)

Сейчас clock() -startTime становится двойным, заставляя CLOCKS_PER_SEC быть также значением с плавающей запятой, и вы получите результат с плавающей запятой. В противном случае это целочисленное деление, и вы получите только целочисленные результаты.

0

По вопросам рекламы [email protected]