# coding: utf-8 # import numpy as np import matplotlib.pyplot as plt n = np.array([1., 5., 10., 50., 100., 500., 1000., 5000., 10000., 60000.]) tguix = np.array([2.871, 3.006, 2.987, 2.892, 2.991, 3.038, 3.088, 3.315, 3.565, 5.634]) tgit = np.array([0.013, 0.006, 0.013, 0.016, 0.014, 0.029, 0.047, 0.12, 0.233, 1.283]) normalize = lambda x: x - x[0] logify = lambda x: np.log10(x[3:]) x = logify(n) y = logify(normalize(tguix)) z = logify(normalize(tgit)) X = np.concatenate((x.reshape((len(x), 1)), np.ones((len(x), 1))), axis=1) guix, res, rank, s = np.linalg.lstsq(X, y, rcond=None) git, res, rank, s = np.linalg.lstsq(X, z, rcond=None) predict = lambda sol: sol[0] * x + sol[1] plt.plot(x, y, 'bo', label='guix') plt.plot(x, z, 'ro', label='git') plt.plot(x, predict(guix), 'bx-') plt.plot(x, predict(git), 'rx-') plt.legend(loc='lower right') plt.xlabel("log(N) where N in `| head -n N`") plt.ylabel("log(real time)") plt.show()