28 lines
625 B
Python
28 lines
625 B
Python
|
import time
|
||
|
from collections.abc import Callable
|
||
|
|
||
|
from matrix import Matrix
|
||
|
from random import random
|
||
|
|
||
|
_THREADS = 20
|
||
|
|
||
|
|
||
|
def measure_time(func: Callable, *args) -> float:
|
||
|
t1 = time.process_time()
|
||
|
func(*args)
|
||
|
t2 = time.process_time()
|
||
|
return round(t2 - t1, 5)
|
||
|
|
||
|
|
||
|
tests = [50 * i for i in range(1, 21)]
|
||
|
|
||
|
for test in tests:
|
||
|
mt1 = Matrix(size=test, suplyer=random)
|
||
|
mt2 = Matrix(size=test, suplyer=random)
|
||
|
|
||
|
t1 = measure_time(lambda: mt1 * mt2)
|
||
|
t5 = measure_time(lambda: mt1 * (mt2, 5))
|
||
|
t20 = measure_time(lambda: mt1 * (mt2, 20))
|
||
|
|
||
|
print(f"|{f'{test}x{test}':<16}|{t1:^11}|{t5:^11}|{t20:^12}|")
|