DAS_2024_1/zhimolostnova_anna_lab_5/regular.go

46 lines
1.1 KiB
Go
Raw Normal View History

2024-10-22 19:23:30 +04:00
package main
import (
"fmt"
"strconv"
"time"
"zhimolostnova_anna_lab_5/util"
)
// Последовательное умножение двух квадратных матриц
func multiplyMatricesSequential(a, b [][]int) [][]int {
size := len(a)
result := make([][]int, size)
for i := range result {
result[i] = make([]int, size)
for j := 0; j < size; j++ {
for k := 0; k < size; k++ {
result[i][j] += a[i][k] * b[k][j]
}
}
}
return result
}
// Функция для бенчмарка последовательного умножения
func benchmarkMatrixMultiplicationSequential(sizes []int) {
for _, size := range sizes {
matrixA := util.CreateMatrix(size)
matrixB := util.CreateMatrix(size)
start := time.Now()
_ = multiplyMatricesSequential(matrixA, matrixB)
elapsed := time.Since(start)
fmt.Printf("Sequential multiplication of matrix %sx%s took %s\n", strconv.Itoa(size), strconv.Itoa(size), elapsed)
}
}
func main() {
// Список размерностей матриц
sizes := []int{100, 300, 500}
// Запуск бенчмарка
benchmarkMatrixMultiplicationSequential(sizes)
}