import time
import random
from matrix_multiplication.sequential import matrix_multiply_sequential
from matrix_multiplication.parallel import matrix_multiply_parallel

def generate_matrix(size):
    return [[random.randint(0, 10) for _ in range(size)] for _ in range(size)]

def benchmark(matrix_size, num_threads):
    A = generate_matrix(matrix_size)
    B = generate_matrix(matrix_size)

    start = time.time()
    matrix_multiply_sequential(A, B)
    sequential_time = time.time() - start

    start = time.time()
    matrix_multiply_parallel(A, B, num_threads)
    parallel_time = time.time() - start

    print(f"Размер матрицы: {matrix_size}x{matrix_size}")
    print(f"Последовательное время: {sequential_time:.5f} сек")
    print(f"Параллельное время ({num_threads} потоков): {parallel_time:.5f} сек")

if __name__ == "__main__":
    for size in [100, 300, 500]:
        benchmark(size, num_threads=4)