CXX = g++ CXXFLAGS = -O2 -std=c++17 -pthread TARGET = lab2 SRC = main.cpp PY = python3 EXPORTER = exporter.py # ================= BUILD ================= all: $(TARGET) $(TARGET): $(SRC) $(CXX) $(CXXFLAGS) $< -o $@ # ================= BATCH 1 ================= # FIXED THREAD COUNT = 2 # VARYING WORKLOAD SIZE batch_size: $(TARGET) @echo "=== BATCH 1: scaling by size (threads = 2) ===" ./$(TARGET) 5000 2 > log_size_5k.txt ./$(TARGET) 10000 2 > log_size_10k.txt ./$(TARGET) 20000 2 > log_size_20k.txt ./$(TARGET) 50000 2 > log_size_50k.txt ./$(TARGET) 100000 2 > log_size_100k.txt # ================= BATCH 2 ================= # FIXED LARGE WORKLOAD # VARYING THREAD COUNT batch_threads: $(TARGET) @echo "=== BATCH 2: scaling by threads (size = 200000) ===" ./$(TARGET) 200000 0 > log_thr_0.txt ./$(TARGET) 200000 2 > log_thr_2.txt ./$(TARGET) 200000 4 > log_thr_4.txt ./$(TARGET) 200000 8 > log_thr_8.txt # ================= FULL BENCH ================= bench: batch_size batch_threads # ================= ANALYSIS ================= analyze_size: $(PY) $(EXPORTER) log_size_5k.txt out/size/ $(PY) $(EXPORTER) log_size_10k.txt out/size/ $(PY) $(EXPORTER) log_size_20k.txt out/size/ $(PY) $(EXPORTER) log_size_50k.txt out/size/ $(PY) $(EXPORTER) log_size_100k.txt out/size/ analyze_threads: $(PY) $(EXPORTER) log_thr_0.txt out/threads/ $(PY) $(EXPORTER) log_thr_2.txt out/threads/ $(PY) $(EXPORTER) log_thr_4.txt out/threads/ $(PY) $(EXPORTER) log_thr_8.txt out/threads/ # ================= CLEAN ================= clean: rm -f $(TARGET) *.txt timeline.png