Here we present some micro-benchmark results that compare the performance of C, Java and Go when used for matrix/vector multiplication. In particular, we consider some simple algorithms for computing

where the matrix
,
the vector
and
the vector
.
Also,
is the transpose of
,
the vector
, and
the vector
.
The algorithms developed here are compared to each other, and to the
BLAS package implementation cblas_dgemv.
These types of matrix/vector multiplication operations occur frequently in many numerical algorithms, and thus, they represent a reasonable basis for evaluating the performance of various programming languages used for numerical computations.
Another objective of this study is to evaluate two well known techniques for storing the data associated with dense matrices. Typically, in C, Java and Go, the matrix data is stored in either: (i) a single array, or, (ii) an array of arrays. Here we will attempt to determine if there is any significant speed advantage in using one approach over the other.
Contents: