Luxuride
Read post

My Rust matrix multiplication + benchmarks

Author:
Luxuride

## Context

This blog post is based on my [repository](https://gitlab.com/luxuride-playground/rust-matrix-multiplication-playground "Gitlab Repository").

To add some context, I tried to implement matrix multiplication in rust for the sake of it, and ended up making pretty robust structure with traits. Thanks to the use of generics I even managed for the matrix to be element of matrix.

So now to the data. The data is split into 2 solutions. 1 using transposition, the other one not.

## Data

### Following data is verifiable data on gitlab pipeline.

| Benchmark  | Transposition                | No Transposition             |
| ---------- | ---------------------------- | ---------------------------- |
| f64 100x50 | 309,521 ns/iter (+/- 14,516) | 875,071 ns/iter (+/- 12,769) |
| f64 5x5    | 1,648 ns/iter (+/- 32)       | 1,392 ns/iter (+/- 41)       |

Just from those 2 benchmarks it is visible that transposition helps more and more on bigger matrices.

### On the following line there will be more robust data taken on my laptop

| Benchmark   | Transposition                       | No Transposition                      |
| ----------- | ----------------------------------- | ------------------------------------- |
| f64 100x50  | 390,190 ns/iter (+/- 19,576)        | 680,935 ns/iter (+/- 26,011)          |
| f64 500x500 | 136,923,363 ns/iter (+/- 9,027,149) | 553,209,462 ns/iter (+/- 274,868,365) |
| f64 5x5     | 3,466 ns/iter (+/- 744)             | 2,805 ns/iter (+/- 1,598)             |

On the 500x500 example it is clearly visible how much the transposition helps in the calculation.