Comparison between two implementations
plt.plot(np.array(dimension), np.array(timings1), 'o', markersize=12, color='red')
plt.plot(np.array(dimension), np.array(timings1), color='red')
plt.plot(np.array(dimension2), np.array(timings2), 'o', markersize=12, color='blue')
plt.plot(np.array(dimension2), np.array(timings2), color='blue')
plt.xlabel("$N$")
plt.ylabel("Timing / s")