2024-heraklion-comp-arch/benchmark_python
2024-08-15 15:49:11 +02:00
..
bench.py fixed a typo in bench.py 2024-08-15 15:49:11 +02:00
bench_plot.py add python benchmark 2024-08-05 16:33:30 +02:00
loading-slowdown-ns128.svg add python benchmark 2024-08-05 16:33:30 +02:00
loading-timings-ns128.svg add python benchmark 2024-08-05 16:33:30 +02:00
README.md typo 2024-08-05 16:40:36 +02:00
results_ns128 add python benchmark 2024-08-05 16:33:30 +02:00

Benchmark

Benchmarks details

  • Create in memory a list of N=128 one dimensional numpy arrays of length L starting from L=2 up to L=2^22=4_194_304 in steps of powers of two.

  • Given that each item of the array is of type float64, i.e. 8 bytes, the size of the arrays goes from 16B to 32M

  • The total memory required is at least 128 × 32M × 2 = 8G

  • Load the whole list in one big numpy array of size NxL (good) and LxN (bad). The corresponding loops are:

    # good loop (store each time series on a different row)
    for row, time_series in enumerate(collection):
        ts[row, :] = time_series
    
    # bad loop (store each time series on a different column)
    for column, time_series in enumerate(collection):
        ts[:, column] = time_series
    
  • Time the bad and the good loop

  • Plot the timings for the good and the bad loop as a function of L

  • Plot slowdown = time_bad/time_good as a function of L

Scripts