Вот что я получил от чистой версии C вашего кода (MacOS X 10.5.8 - Leopard, MacBook Pro):
#include <time.h>
#include <stdio.h>
int main(void)
{
clock_t start = clock();
clock_t end = clock();
float dif_sec = ((float)end-start)/CLOCKS_PER_SEC;
printf("%s: %f seconds\n", "difference", dif_sec);
printf("%s: %d\n", "CLOCKS_PER_SEC", CLOCKS_PER_SEC);
return(0);
}
Это, как я скомпилировал его, и побежал, и результаты Я получил:
Osiris JL: gcc -m32 -o xxx-32 xxx.c
Osiris JL: gcc -m64 -o xxx-64 xxx.c
Osiris JL: ./xxx-32
difference: 0.000006 seconds
CLOCKS_PER_SEC: 1000000
Osiris JL: ./xxx-64
difference: 0.000009 seconds
CLOCKS_PER_SEC: 1000000
Osiris JL: ./xxx-64
difference: 0.000003 seconds
CLOCKS_PER_SEC: 1000000
Osiris JL: ./xxx-32
difference: 0.000003 seconds
CLOCKS_PER_SEC: 1000000
Osiris JL:
Выглядит вроде нормально - возможно, скорее, но это нормально; это хорошая новая машина, и не требуется много времени, чтобы сделать две системные вызовы подряд.
Пожалуйста, объясните, что вы ожидаете, и что делает, чтобы у нас была какая-то надежда ответить на ваш вопрос. – pavpanchekha
Вот результат двух последовательных вызовов на одном компьютере, 1-й по 32 бита, а затем в 64 бит. Это примерно занимает одно и то же время, несмотря на то, что печатается. MacBook: Выпуск Alexis $ ./test л boat.ppm output.ppm анализ: 0.030000 секунд процесс: 1.000000 секунд рендеринга: 0.080000 секунд MacBook: Выпуск Alexis $ ./test л boat.ppm output.ppm анализ: 207.559998 секунд процесс: 11289.139648 секунд визуализации: 648.200012 секунд вопрос заключается в том, что часы() возвращает гораздо большее число в 64 бита, в то время как CLOCKS_PER_SEC еще 100. Идеи? – vectorizor
Вы понимаете, что 'clock()' is _processor time_, а не _wall clock time_ правильно? Как вы компилируете 32-разрядный 64-разрядный режим? И, наконец, 'CLOCKS_PER_SEC' обычно определяется как 1 000 000, по крайней мере, то, что есть на моем MacBook Pro, - посмотрите раздел _STANDARDS_ на странице (3) man-страницы. –