Измерение времени одной арифметической операции с помощью gettimeofday ()

Я пытаюсь измерить время атомных операций, например, поразрядно.
Проблема в том, что я не могу просто вычислить 0&1, потому что IDE делает оптимизацию и игнорирует эту команду, поэтому мне пришлось использовать присваивание

num = 0&1.

Таким образом, чтобы получить точное время операции без назначения Я проверял время, необходимое для выполнения единственного задания, я сделал это с x=0;
и вернуть в конце что-то вроде этого

return assign_and_comp - assign_only;

Проблема в том, что я получаю отрицательные результаты довольно часто.

Возможно ли, что num=0&1 стоить меньше, чем x=0 ?

Я не могу использовать любую функцию измерения времени, кроме gettimeofday (), к сожалению

Я видел Это блюдо , сначала я вынужден использовать gettimeofday() но самое важное, что я измеряю таким же образом, получаю время до и после операции и возвращаю различие.
НО, я пытаюсь изолировать назначение от операции, и это не то, что они делают в душе.

Это мой полный код.

#include <iostream>
#include <sys/time.h>
#include "osm.h"
#define NUM_ITERATIONS 1000000
#define SECOND_TO_NANO 1000000000.0
#define MICRO_TO_NANO 1000.0
using namespace std;//globals variabels
struct timeval tvalBefore, tvalAfter;
double assign_only = 0.0;

int main() {
osm_init();
cout << osm_operation_time(50000) << endl;
return 0;
}

int osm_init(){
int x=0;
gettimeofday(&tvalBefore,NULL);
for (int i=0; i<NUM_ITERATIONS; i++){
x = 0;
}
gettimeofday(&tvalAfter,NULL);
assign_only  = ((tvalAfter.tv_sec-tvalBefore.tv_sec)*SECOND_TO_NANO+
(tvalAfter.tv_usec-tvalBefore.tv_usec)*MICRO_TO_NANO)/NUM_ITERATIONS;
return 0;
}

double osm_operation_time(unsigned int iterations){
volatile int num=0;
gettimeofday(&tvalBefore,NULL);
for (int i=0; i<iterations; i++){
num = 0&1;
}
gettimeofday(&tvalAfter,NULL);
double assign_and_comp = ((tvalAfter.tv_sec-tvalBefore.tv_sec)*SECOND_TO_NANO+
(tvalAfter.tv_usec-tvalBefore.tv_usec)*MICRO_TO_NANO)/iterations;
return  assign_and_comp-assign_only;
}

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

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