Для правильного измерения времени выполнения функций fread
и fwrite
в языке Си с использованием компилятора GCC, вы можете использовать функции clock()
или clock_gettime()
.
1. Использование функции clock()
:
#include <stdio.h> #include <time.h> int main() { FILE *file = fopen("file.txt", "rb"); if (file == NULL) { printf("Ошибка при открытии файла.n"); return 1; } clock_t start = clock(); /* код, в котором вы вызываете функцию fread/fwrite */ clock_t end = clock(); double cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC; printf("Время выполнения: %f секундыn", cpu_time_used); fclose(file); return 0; }
В этом коде мы вызываем clock()
до и после выполнения чтения или записи, вычисляем разницу между ними и делим на CLOCKS_PER_SEC
для получения времени выполнения в секундах.
2. Использование функции clock_gettime()
:
#include <stdio.h> #include <time.h> int main() { FILE *file = fopen("file.txt", "rb"); if (file == NULL) { printf("Ошибка при открытии файла.n"); return 1; } struct timespec start, end; clock_gettime(CLOCK_MONOTONIC, &start); /* код, в котором вы вызываете функцию fread/fwrite */ clock_gettime(CLOCK_MONOTONIC, &end); double cpu_time_used = (end.tv_sec - start.tv_sec) + (end.tv_nsec - start.tv_nsec) / 1e9; printf("Время выполнения: %f секундыn", cpu_time_used); fclose(file); return 0; }
В этом коде мы вызываем clock_gettime()
перед и после выполнения чтения или записи, записываем значения в структуры start
и end
, и используем эти значения для вычисления времени выполнения в секундах. Мы используем CLOCK_MONOTONIC
, чтобы получить самое точное измерение времени.
Обе эти функции предоставляют достаточно точные результаты времени выполнения функций fread
и fwrite
. Выбор между ними зависит от ваших потребностей и доступности в вашей операционной системе.