<commit_before># Polyglot Inner Product

#### The Assignment
Write a matrix multiplication algorithm in C++, benchmark it.
Try to make it faster by paying attention to memory access patterns.

#### The Twist
Do the same thing in a different language and compare the results by:

* execution time
* programmer time
* code size

For this particular shootout, the languages being compared are

* [C++](http://isocpp.org/), the de-facto systems programming language. Key features:
    * speed 
    * control
* [J](http://www.jsoftware.com/), an APL dialect that doesn't require a special keyboard. Key features:
    * statistical analysis
    * tacit programming.

## Try it
prerequesites:

* `jconsole`, a command-line front-end for the J language
* `make` and a recent GCC to compile the C program for your system
* `python` to run the benchmarking script

running:

1. In a terminal, navigate to the MatrixMult folder and run `make`.
2. run `pytimer` to display the execution times (e.g. on UNIX based systems, type `./pytimer`)

## Files
```
MatrixMult/
├── exe
│   ├── cexe
│   ├── cnothing
│   ├── jexe
│   └── jnothing
├── makefile
├── old
│   ├── argv.ijs
│   ├── oldInnerProduct.cpp
│   └── oldInnerProduct.ijs
├── pytimer
├── README.markdown
└── src
    ├── cInnerProduct.cpp
    ├── cnothing.cpp
    ├── jInnerProduct.ijs
    └── jnothing.ijs

3 directories, 14 files
```<commit_msg>clean readme<commit_after># Polyglot Inner Product

#### The Assignment
Write a matrix multiplication algorithm in C++, benchmark it.
Try to make it faster...

#### The Twist
Do the same thing in a different language and compare the results by:

* execution time
* programmer time
* code size

For this particular shootout, the languages being compared are

* [C++](http://isocpp.org/), the de-facto systems programming language. Key features:
    * speed 
    * control
* [J](http://www.jsoftware.com/), an APL dialect that doesn't require a special keyboard. Key features:
    * statistical analysis
    * tacit programming.

## Try it
prerequesites:

* `jconsole`, a command-line front-end for the J language
* `make` and a recent GCC to compile the C program for your system
* `python` to run the benchmarking script

running:

1. In a terminal, navigate to the MatrixMult folder and run `make`.
2. run `pytimer N` to create files showing the execution times for 0..N sized multiplications.
{'fraction_non_alphanumeric': 0.10654362416107382, 'fraction_numerical': 0.003355704697986577, 'mean_word_length': 3.7987927565392354, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3291076', 'n_tokens_mistral': 746, 'n_tokens_neox': 722, 'n_words': 323}