История изменений
Исправление MOPKOBKA, (текущая версия) :
функция получения времени занимают много времени
Сколько именно?
#include <stdio.h>
#include <time.h>
#include <stdint.h>
#define N 1000
int main() {
struct timespec ts;
uint64_t prev, curr, diff[N];
double avg;
int i;
prev = 0;
avg = 0;
for (i = -1; i < N; ++i) {
clock_gettime(CLOCK_MONOTONIC, &ts);
curr = ts.tv_sec * 1000000000 + ts.tv_nsec;
if (i >= 0) {
diff[i] = curr - prev;
}
prev = curr;
}
for (i = 0; i < N; ++i) {
printf("diff[%d] = %.2fs : %zu\n", i, diff[i] / 1000000000.0, diff[i]);
avg += diff[i];
}
avg /= N;
printf("diff[avg] = %.2fs : %zu\n", avg / 1000000000.0, (uint64_t)avg);
return 0;
}
Мой результат
1000 diff[avg] = 0.00s : 87
1000000 diff[avg] = 0.00s : 10
Довольно быстрая функция.
Исправление MOPKOBKA, :
функция получения времени занимают много времени
Сколько именно?
#include <stdio.h>
#include <time.h>
#include <stdint.h>
#define N 1000
int main() {
struct timespec ts;
uint64_t prev, curr, diff[N];
double avg;
int i;
prev = 0;
avg = 0;
for (i = -1; i < N; ++i) {
clock_gettime(CLOCK_MONOTONIC, &ts);
curr = ts.tv_sec * 1000000000 + ts.tv_nsec;
if (i >= 0) {
diff[i] = curr - prev;
}
prev = curr;
}
for (i = 0; i < N; ++i) {
printf("diff[%d] = %.2fs : %zu\n", i, diff[i] / 1000000000.0, diff[i]);
avg += diff[i];
}
avg /= N;
printf("diff[avg] = %.2fs : %zu\n", avg / 1000000000.0, (uint64_t)avg);
return 0;
}
Мой результат
1000 diff[avg] = 0.00s : 87
1000000 diff[avg] = 0.00s : 10
Исходная версия MOPKOBKA, :
функция получения времени занимают много времени
Сколько именно?
#include <stdio.h>
#include <time.h>
#include <stdint.h>
#define N 1000
int main() {
struct timespec ts;
uint64_t prev, curr, diff[N];
double avg;
int i;
prev = 0;
avg = 0;
for (i = -1; i < N; ++i) {
clock_gettime(CLOCK_MONOTONIC, &ts);
curr = ts.tv_sec * 1000000000 + ts.tv_nsec;
if (i >= 0) {
diff[i] = curr - prev;
}
prev = curr;
}
for (i = 0; i < N; ++i) {
printf("diff[%d] = %.2fs : %zu\n", i, diff[i] / 1000000000.0, diff[i]);
avg += diff[i];
}
avg /= N;
printf("diff[avg] = %.2fs : %zu\n", avg / 1000000000.0, (uint64_t)avg);
return 0;
}
Мой результат
diff[avg] = 0.00s : 87