mit-ocw

Source code for MIT-OCW coursework
git clone git://git.laack.co/mit-ocw.git
Log | Files | Refs

commit b2a4f54514156be7f3690a300b43ee16c50b3431
parent 01eed5d2f3647f3e465891f36c9741c6c24064b7
Author: Andrew Laack <andrew@laack.co>
Date:   Wed, 13 May 2026 02:13:17 -0500

Implemented in go and python

Diffstat:
A6.172-perf-engineering/mat-mul/mat_mul.go | 55+++++++++++++++++++++++++++++++++++++++++++++++++++++++
A6.172-perf-engineering/mat-mul/mat_mul.py | 30++++++++++++++++++++++++++++++
2 files changed, 85 insertions(+), 0 deletions(-)

diff --git a/6.172-perf-engineering/mat-mul/mat_mul.go b/6.172-perf-engineering/mat-mul/mat_mul.go @@ -0,0 +1,55 @@ +package main + +import ( + "fmt" + "math/rand" + "time" +) + +const n = 400 + +func randInit(arr [n][n]float32) [n][n]float32 { + + for i := range len(arr) { + for j := range len(arr[i]) { + arr[i][j] = rand.Float32() + } + } + + return arr + +} + +func main(){ + + + A := [n][n]float32{} + B := [n][n]float32{} + C := [n][n]float32{} + + + A = randInit(A) + B = randInit(B) + + start := time.Now() + + for i := range A { + for k := range B { + for j := range B { + C[i][j] += A[i][k] * B[k][j] + } + } + } + + end := time.Now() + + fmt.Println(end.Sub(start).Seconds()) +} + +// This runs in: + +// 1: 0.048146089 +// 2: 0.047572412 +// 3: 0.047875806 + +// AVG: 0.047864769 diff --git a/6.172-perf-engineering/mat-mul/mat_mul.py b/6.172-perf-engineering/mat-mul/mat_mul.py @@ -0,0 +1,30 @@ +import random +import time + +n = 400 + +A = [[random.random() for _ in range(n)] for _ in range(n)] +B = [[random.random() for _ in range(n)] for _ in range(n)] + +C = [[0 for _ in range(n)] for _ in range(n)] + + +start = time.time() + +for i in range(len(A)): + for k in range(len(B)): + for j in range(len(B)): + C[i][j] += A[i][k] * B[k][j] + + +end = time.time() + +print(end - start) + +# This runs in: + +# 1: 13.906554698944092 +# 2: 13.789746761322021 +# 3: 14.16126012802124 + +# AVG: 13.952520529429117