DAS_2024_1/zhimolostnova_anna_lab_6/run.go
2024-10-22 19:30:00 +03:00

53 lines
1.5 KiB
Go

package main
import (
"fmt"
"strconv"
"time"
"zhimolostnova_anna_lab_6/alg"
"zhimolostnova_anna_lab_6/util"
)
// Функция для бенчмарка последовательного вычисления детерминанта
func benchmarkDeterminantSequential(sizes []int) {
for _, size := range sizes {
matrix := util.GenerateMatrix(size)
start := time.Now()
_ = alg.Determinant(matrix)
elapsed := time.Since(start)
fmt.Printf("Sequential determinant of matrix %sx%s took %s\n", strconv.Itoa(size), strconv.Itoa(size), elapsed)
}
}
// Функция для бенчмарка параллельного вычисления детерминанта
func benchmarkDeterminantParallel(sizes []int, threadsList []int) {
for _, size := range sizes {
for _, threads := range threadsList {
matrix := util.GenerateMatrix(size)
start := time.Now()
_ = alg.DeterminantParallel(matrix, threads)
elapsed := time.Since(start)
fmt.Printf("Parallel determinant of matrix %sx%s with %d threads took %s\n", strconv.Itoa(size), strconv.Itoa(size), threads, elapsed)
}
}
}
func main() {
// Список размерностей матриц
sizes := []int{7, 8, 9}
// Список количества потоков для тестирования
threadsList := []int{2, 4, 6, 8}
// Запуск бенчмарков
fmt.Println("Sequential Benchmark:")
benchmarkDeterminantSequential(sizes)
fmt.Println("\nParallel Benchmark:")
benchmarkDeterminantParallel(sizes, threadsList)
}