2016-09-26 1 views
2

Мне было интересно, в чем разница между возвращаемым значением вышеупомянутых констант.sysconf (_SC_CLK_TCK) против CLOCKS_PER_SEC

sysconf (_SC_CLK_TCK) возвращает 100
CLOCKS_PER_SEC возвращает 1000000.

Итак, предположим, что у меня есть это:

... 
start = clock(); 
// Process starts here 
/* does something */ 
// Process ends here 
end = clock(); 
double time = ((double) end-start)/CLOCK_PER_SEC; // this would return in seconds 
... 

Как рассчитать количество тиков, используемых в процессе, вместо время? Использую ли я время, затрачиваемое на sysconf (_SC_CLK_TCK) или CLOCK_PER_SEC?

Я пытаюсь понять их использование.

+0

Я не понимаю, о чем вы просите. 'clock()' возвращает «количество тиков», чья скорость задается 'CLOCK_PER_SEC'. –

+0

'CLOCKS_PER_SEC' не возвращает * ничего, это значение, определенное для препроцессора. В то время как 'sysconf' является нестандартной * функцией *, которая возвращает информацию об ОС, на которой она запущена. –

+0

@WeatherVane: Он стандартный в POSIX. Не в C, правда. –

ответ

1

Согласно документации, clock() возвращает время в разрешении CLOCKS_PER_SEC.

Другие функции времени возвращают значения с разрешением в тики. sysconf(_SC_CLK_TCK) обеспечивает количество тиков в секунду. Одна такая функция времени - times().

+0

Итак, давайте скажем, что в 'time = ((double) end-start' без' CLOCKS_PER_SEC' это будет измерять время в микросекундах правильно? Нужно ли разделять 'CLOCKS_PER_SEC', чтобы фактически получить его за считанные секунды, или это нормально просто разделите его на 1 000 000, чтобы получить его за несколько секунд? Я имею в виду, что у обоих они одинаковые значения. Поэтому я не уверен. Чтобы получить количество тиков, я бы просто имел 'int ticks = time * sysconf (_SC_CLK_TCK ', правильно? – thedarkguy

+0

Как уже упоминалось в комментариях, есть более трудные функции, которые вы можете использовать. Но придерживайтесь документированных интерфейсов. Хотя маловероятно, определение CLOCKS_PER_SEC может измениться. – jxh

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