From 1c1c52786c368c68b62f9b57d7fb47f730c3f741 Mon Sep 17 00:00:00 2001 From: pajjilykk Date: Tue, 21 Apr 2026 10:54:57 +0700 Subject: [PATCH] add timers --- lab1 | Bin 17512 -> 17600 bytes main.cpp | 45 +++++++++++++++++++++++++++++++++++---------- 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/lab1 b/lab1 index b10999bfce5f0649a3c303de4c868284c0cd957c..281ff034b27dac4af852a3389022c28e6433822f 100755 GIT binary patch delta 3757 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 X2g=Q}>on~$vvuuMbm8 diff --git a/main.cpp b/main.cpp index 4ed4f53..5f95ab6 100644 --- a/main.cpp +++ b/main.cpp @@ -15,6 +15,13 @@ struct SharedData { int arr[MAX]; }; +// ================= TIME ================= +double now() { + timeval t; + gettimeofday(&t, NULL); + return t.tv_sec + t.tv_usec / 1e6; +} + // ================= MERGE ================= void merge(int *arr, int l, int m, int r) { int *temp = new int[r - l + 1]; @@ -50,14 +57,27 @@ void local_sort(int *arr, int l, int r) { void parallel_sort(int *arr, int l, int r, int depth) { if (l >= r) return; - int m = (l + r) / 2; + double start = now(); - cout << "PID " << getpid() + pid_t pid = getpid(); + pid_t ppid = getppid(); + + cout << "[START] t=" << start + << " PID=" << pid + << " PPID=" << ppid << " depth=" << depth << " range=[" << l << "," << r << "]\n"; + int m = (l + r) / 2; + if (depth >= MAX_DEPTH) { local_sort(arr, l, r); + + double end = now(); + cout << "[END] t=" << end + << " PID=" << pid + << " duration=" << (end - start) + << " sec\n"; return; } @@ -79,6 +99,13 @@ void parallel_sort(int *arr, int l, int r, int depth) { waitpid(right, NULL, 0); merge(arr, l, m, r); + + double end = now(); + + cout << "[END] t=" << end + << " PID=" << pid + << " duration=" << (end - start) + << " sec\n"; } // ================= MAIN ================= @@ -95,19 +122,17 @@ int main() { for (int i = 0; i < n; i++) data->arr[i] = rand() % 100000; - timeval start, end; + double global_start = now(); - gettimeofday(&start, NULL); + cout << "Main PID=" << getpid() << "\n\n"; parallel_sort(data->arr, 0, n - 1, 0); - gettimeofday(&end, NULL); + double global_end = now(); - double time_spent = - (end.tv_sec - start.tv_sec) + - (end.tv_usec - start.tv_usec) / 1e6; - - cout << "\nExecution time: " << time_spent << " sec\n"; + cout << "\nExecution time: " + << (global_end - global_start) + << " sec\n"; // Проверка for (int i = 1; i < n; i++) {