#include #include #include #include /* */ long long benchmark_reader_file(const char *pathname) { struct timeval start, end; unsigned long long startOffset = 0; // Start from the first number (0-based index) unsigned long long endOffset = -1; // Read up to the X number (exclusive), -1 in the last one because is unsigned FILE *file; int64_t num; file = fopen(pathname, "rb"); if (!file) return -1;//Something went wrong fseek(file, startOffset * sizeof(int64_t), SEEK_SET); gettimeofday(&start, NULL);//Timer Start unsigned long long currentOffset = startOffset; while (currentOffset < endOffset && fread(&num, sizeof(int64_t), 1, file) == 1) currentOffset++; gettimeofday(&end, NULL);//Timer Stop fclose(file); return (end.tv_sec - start.tv_sec) * 1000000LL + (end.tv_usec - start.tv_usec); } /* */ int is_sorted(const char *pathname) { unsigned long long startOffset = 0; // Start from the first number (0-based index) unsigned long long endOffset = -1; // Read up to the X number (exclusive), -1 in the last one because is unsigned FILE *file; int64_t num; long long int count=1; file = fopen(pathname, "rb"); if (!file) return -1;//Something went wrong fseek(file, startOffset * sizeof(int64_t), SEEK_SET); unsigned long long currentOffset = startOffset; int64_t tmp; fread(&tmp, sizeof(int64_t), 1, file); // Take first element(number) in the file currentOffset++; while (currentOffset < endOffset && fread(&num, sizeof(int64_t), 1, file) == 1) { count++; if(tmp > num){ fclose(file); // printf("non ordinati\n"); return 0; } tmp = num; currentOffset++; } fclose(file); // printf("%lld numeri ordinati",count); return 1; } /* Start from the start number (0-based index), read up to the end number (exclusive). */ void print_partial_file(const char *pathname, unsigned long long startOffset, unsigned long long endOffset) { FILE *file; int64_t num; file = fopen(pathname, "rb"); if (!file) return;//Something went wrong fseek(file, startOffset * sizeof(int64_t), SEEK_SET); unsigned long long currentOffset = startOffset; while (currentOffset < endOffset && fread(&num, sizeof(int64_t), 1, file) == 1) { printf("%lld\n", (long long)num); currentOffset++; } fclose(file); return; } /* */ void print_all_file(const char *pathname) { unsigned long long startOffset = 0; // Start from the first number (0-based index) unsigned long long endOffset = -1; // Read up to the X number (exclusive), -1 in the last one because is unsigned FILE *file; int64_t num; file = fopen(pathname, "rb"); if (!file) return;//Something went wrong fseek(file, startOffset * sizeof(int64_t), SEEK_SET); unsigned long long currentOffset = startOffset; while (currentOffset < endOffset && fread(&num, sizeof(int64_t), 1, file) == 1) { printf("%lld - ", (long long)num); currentOffset++; } printf("EOF\n"); fclose(file); return; }