2013-08-31 2 views
1

Я пытаюсь вычислить дельту в миллисекундах с чем-то вроде этого:вычисления дельта неправильно

int olddelta = 0; 
    int delta = 0; 
    const clock_t begin_time = clock(); 
    while (true) { 
     olddelta=delta; 
     delta=clock()-olddelta; 
     cout<<delta<<endl; 
} 

однако это не работает, как дельта, безусловно, не более 4000, и это, кажется, становятся все выше. Что я сделал неправильно?

+0

Что вы будете * пытается * сделать в первую очередь? «Дельта» должна быть * на итерацию * или накапливаться в течение жизни цикла while, который бесконечен). Я думаю, вы пытаетесь использовать их, если вы ожидаете одинаковых чисел с каждой итерацией, и если да, это просто неправильный алгоритм. – WhozCraig

ответ

3

Поскольку вы используете clock(), вам необходимо его разделить на CLOCKS_PER_SEC, чтобы получить результат, выраженный в секундах. Для того, чтобы получить фракции, отлитый clock() к double до разделения:

double olddelta = 0; 
double delta = 0; 
const double begin_time = clock(); 
while (true) { 
    olddelta = delta; 
    delta=clock()-olddelta; 
    cout << (delta/CLOCKS_PER_SEC) << endl; 
} 

Если вы хотите, чтобы измерить время одной итерации, изменить цикл следующим образом:

double olddelta = 0; 
double delta = 0; 
const double begin_time = clock(); 
while (true) { 
    double now = clock(); 
    delta = now - begin_time; 
    cout << (delta/CLOCKS_PER_SEC) << endl; 
    begin_time = now; 
} 
+0

Это, конечно, изменит отображение, но что-то кажется странным с неожиданностью OP, что это приводит к тому, что он все чаще выдает сигнал. – WhozCraig

+1

@WhozCraig Я сомневаюсь, что OP удивлен тем, что цифры становятся выше, только тем, что число становится выше на столько. 4000 кажется большим числом или как небольшое число, если вы не знаете, что это значит. Мой учитель физики в шутку спрашивал, слишком ли много или слишком мало трех волосков, и его ответ заключался в том, что если он на вершине головы, это слишком мало, и если он находится в миске супа, это слишком много; -) – dasblinkenlight

+0

, следуя вашим советам, я все еще получаю вывод, который становится все выше, ex 1,2,3,4,5,6,7,8,9,10. Кроме того, более одной секунды смехотворно большое количество времени, чтобы выполнить такой простой цикл while, как выше? – user2673108