diff --git a/benchmarks/.ipynb_checkpoints/cython_least_squares-checkpoint.ipynb b/benchmarks/.ipynb_checkpoints/cython_least_squares-checkpoint.ipynb index 8c47d64..fafb461 100644 --- a/benchmarks/.ipynb_checkpoints/cython_least_squares-checkpoint.ipynb +++ b/benchmarks/.ipynb_checkpoints/cython_least_squares-checkpoint.ipynb @@ -1,7 +1,7 @@ { "metadata": { "name": "", - "signature": "sha256:3b47add80317bb8ad369eacd5528c941bb1a2cbd92ae5b33aae66d56ae35c741" + "signature": "sha256:caecd42da39e4b55b4dc50c985b30a04ee3eac4a88d143732c4441ecc28fc1e0" }, "nbformat": 3, "nbformat_minor": 0, @@ -72,7 +72,8 @@ "- [Performance growth rates for different sample sizes](#sample_sizes)\n", "- [Bonus: How to use Cython without the IPython magic](#cython_bonus)\n", "- [Appendix I: Cython vs. Numba](#numba)\n", - "- [Appendix II: Cython with and without type declarations](#type_declarations)" + "- [Appendix II: Cython with and without type declarations](#type_declarations)\n", + "- [Appendix III: Cython performance after replacing list comprehensions by explicit for loops](#explicit_loops)" ] }, { @@ -1400,7 +1401,14 @@ "source": [ "Like we did with Cython before, we will use the minimalist approach to Numba and see how they compare against each other. \n", "\n", - "Numba is using the [LLVM compiler infrastructure](http://llvm.org) for compiling Python code to machine code. Its strength is to work with NumPy arrays to speed-up code. If you want to read more about Numba, see the original [website and documentation](http://numba.pydata.org/numba-doc/0.13/index.html)" + "Numba is using the [LLVM compiler infrastructure](http://llvm.org) for compiling Python code to machine code. Its strength is to work with NumPy arrays to speed-up code. If you want to read more about Numba, see the original [website and documentation](http://numba.pydata.org/numba-doc/0.13/index.html)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is our \"classic\" approach in Python, where I removed the list comprehensions, since they caused errors in the Numba compilation." ] }, { @@ -1411,8 +1419,12 @@ " \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n", " x_avg = sum(x)/len(x)\n", " y_avg = sum(y)/len(y)\n", - " var_x = sum([(x_i - x_avg)**2 for x_i in x])\n", - " cov_xy = sum([(x_i - x_avg)*(y_i - y_avg) for x_i,y_i in zip(x,y)])\n", + " var_x = 0\n", + " for x_i in x:\n", + " var_x += (x_i - x_avg)**2\n", + " cov_xy = 0\n", + " for x_i, y_i in zip(x,y):\n", + " cov_xy += (x_i - x_avg)*(y_i - y_avg)\n", " slope = cov_xy / var_x\n", " y_interc = y_avg - slope*x_avg\n", " return (slope, y_interc)" @@ -1420,7 +1432,14 @@ "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 1 + "prompt_number": 22 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Cython-compiled version of it:" + ] }, { "cell_type": "code", @@ -1430,8 +1449,7 @@ ], "language": "python", "metadata": {}, - "outputs": [], - "prompt_number": 2 + "outputs": [] }, { "cell_type": "code", @@ -1443,8 +1461,12 @@ " \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n", " x_avg = sum(x)/len(x)\n", " y_avg = sum(y)/len(y)\n", - " var_x = sum([(x_i - x_avg)**2 for x_i in x])\n", - " cov_xy = sum([(x_i - x_avg)*(y_i - y_avg) for x_i,y_i in zip(x,y)])\n", + " var_x = 0\n", + " for x_i in x:\n", + " var_x += (x_i - x_avg)**2\n", + " cov_xy = 0\n", + " for x_i, y_i in zip(x,y):\n", + " cov_xy += (x_i - x_avg)*(y_i - y_avg)\n", " slope = cov_xy / var_x\n", " y_interc = y_avg - slope*x_avg\n", " return (slope, y_interc)" @@ -1452,7 +1474,14 @@ "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 3 + "prompt_number": 26 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And now the Numba-compiled version:" + ] }, { "cell_type": "code", @@ -1465,37 +1494,95 @@ " \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n", " x_avg = sum(x)/len(x)\n", " y_avg = sum(y)/len(y)\n", - " var_x = sum([(x_i - x_avg)**2 for x_i in x])\n", - " cov_xy = sum([(x_i - x_avg)*(y_i - y_avg) for x_i,y_i in zip(x,y)])\n", + " var_x = 0\n", + " for x_i in x:\n", + " var_x += (x_i - x_avg)**2\n", + " cov_xy = 0\n", + " for x_i, y_i in zip(x,y):\n", + " cov_xy += (x_i - x_avg)*(y_i - y_avg)\n", + " \n", " slope = cov_xy / var_x\n", " y_interc = y_avg - slope*x_avg\n", " return (slope, y_interc)" ], "language": "python", "metadata": {}, - "outputs": [ - { - "ename": "ImportError", - "evalue": "No module named 'llvm'", - "output_type": "pyerr", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mnumba\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mjit\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mjit\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mnmb_lstsqr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m\"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numba/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \"\"\"\n\u001b[1;32m 4\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0m__future__\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mprint_function\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdivision\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mabsolute_import\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtesting\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdecorators\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0m_version\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mget_versions\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;31m# Re-export typeof\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numba/decorators.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mwarnings\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mnumba\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0msigutils\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mnumba\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtargets\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mregistry\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;31m# -----------------------------------------------------------------------------\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numba/targets/registry.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0m__future__\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mprint_function\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdivision\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mabsolute_import\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mnumba\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mutils\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtyping\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mnumba\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtargets\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mcpu\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mnumba\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtargets\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdescriptors\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mTargetDescriptor\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mnumba\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mdispatcher\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numba/targets/cpu.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mllvm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mlc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mllvm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpasses\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mlp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mllvm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mee\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mle\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mImportError\u001b[0m: No module named 'llvm'" - ] - } - ], - "prompt_number": 4 + "outputs": [], + "prompt_number": 27 }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# ... this section is still in progress" + "
\n", + "
\n", + "Now, let us see how the different approaches compare against each other for different sample sizes." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import timeit\n", + "import random\n", + "random.seed(12345)\n", + "\n", + "funcs = ['lstsqr', 'cy_lstsqr', 'nmb_lstsqr'] \n", + "orders_n = [10**n for n in range(1, 7)]\n", + "times_n = {f:[] for f in funcs}\n", + "\n", + "for n in orders_n:\n", + " x = [x_i*random.randrange(8,12)/10 for x_i in range(n)]\n", + " y = [y_i*random.randrange(10,14)/10 for y_i in range(n)]\n", + " for f in funcs:\n", + " times_n[f].append(timeit.Timer('%s(x,y)' %f, \n", + " 'from __main__ import %s, x, y' %f).timeit(1000))" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 28 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#%pylab inline\n", + "#import matplotlib.pyplot as plt\n", + "\n", + "plt.figure(figsize=(10,8))\n", + "\n", + "for f in times_n.keys():\n", + " plt.plot(orders_n, times_n[f], alpha=0.5, label=f, marker='o', lw=2)\n", + "\n", + "plt.xlabel('sample size n')\n", + "plt.ylabel('time in ms')\n", + "plt.xlim([0,max(orders_n) + max(orders_n) * 0.1])\n", + "plt.legend(loc=2)\n", + "plt.grid()\n", + "\n", + "plt.title('Performance of a simple least square fit implementation')\n", + "plt.show()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "iVBORw0KGgoAAAANSUhEUgAAAmEAAAH4CAYAAAACdDpdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4k2XW+PFv0n1vKV2A0gUKhULZBRSQQhFwYRlBliKL\nivO6jCvzc3RUFp0RxhnfcfB1m2GpClhABWRHliqiUtmkUKC00AJtKS2lQOmSNrl/fzxDpFCgSNts\n53Ndva4+SZ7kJCdPcnLfd050SimFEEIIIYRoVHpLByCEEEII4YikCBNCCCGEsAApwoQQQgghLECK\nMCGEEEIIC5AiTAghhBDCAqQIE0IIIYSwACnChM0pKCjg7rvvxtfXl//3//6fpcOxuPLycoYNG4a/\nvz9jx45tsNu57777+OyzzxrkuvV6PceOHbvl/ZKSkujXr18DRGT/duzYQZs2bfD19WXVqlXcd999\nfPrpp3Xe3xqfD9Zu9uzZPP7445YOQ1gRZ0sHIBxDZGQkZ86cwcnJCS8vL+69917+7//+Dy8vr1u+\nrn//+98EBwdz4cKFBojU9nzxxRecOXOG4uJi9PqG+1y1bt26BrtuaxYfH8/EiRN57LHHLB1KvZo+\nfTrPPvsszzzzDAAjRowwn5eUlMT8+fPZvn37dfd3tOfDzJkzycrKqnPhmZKSwsSJEzl58qT5tFde\neaWhwhM2SkbCRKPQ6XSsWbOGixcvsmfPHnbt2sVf/vKXW7oOpRQmk4mcnBzat2//m+Korq7+TftZ\ns5ycHNq2bdugBZgj0+l0lg7hpn7L8/rEiRPExsY2QDRCiDpTQjSCyMhItWXLFvP2H//4R/XAAw8o\npZT68ccf1Z133qn8/f1V586dVUpKivly/fv3V6+++qrq06eP8vDwUA8//LBycXFRrq6uytvbW23Z\nskVVVlaq5557TjVv3lw1b95cPf/886qyslIppdS2bdtUixYt1N/+9jcVGhqqJk6cqGbOnKlGjx6t\nHn74YeXj46Pi4uJURkaGeuutt1RwcLAKDw9XmzZtMsewYMEC1b59e+Xj46NatWqlPv74Y/N5l6//\nnXfeUcHBwapZs2Zq4cKF5vPLysrUiy++qCIiIpSfn5/q27evKi8vv+n9vlp6errq37+/8vf3Vx06\ndFBff/21Ukqp6dOnK1dXV+Xi4qK8vb3VggULrtl3586dqnfv3srf3181a9ZM/eEPf1AGg6HW2ykv\nL1cTJkxQgYGByt/fX91xxx3qzJkz5lzMmzdPKaXUwoUL1V133aVeeOEF5e/vr1q3bq127NihFixY\noFq2bKmCg4PVJ598Yr7eyZMnq//5n/9R99xzj/Lx8VH9+/dXOTk55vN1Op3KyspSSilVUVGhpk2b\npsLDw1VISIh64oknzI/Z1RYuXKj69u1r3j506JAaNGiQatKkiYqJiVHLli0zn7dmzRrVpUsX5evr\nq1q2bKlmzpx5w/tdUFCg/vznPysnJyfl7u6uvL291TPPPFOnx6ygoEAppdSxY8fU3XffrXx8fNQ9\n99yjnn76afXwww8rpbTnTlhYWI3rioiIMB8nN8ubTqdT77//voqOjlatWrVSSim1evVq1blzZ+Xv\n76/uuusutX///loft1atWim9Xq88PDyUj4+PqqysNOf30KFDys3NTTk5OSlvb28VEBBQ63VYw/Ph\n8vH39ttvq6CgINWsWTO1YsUKtXbtWtWmTRvVpEkTNXv2bPP1mkwmNXv2bNW6dWsVGBioxowZo4qL\ni5VSSh0/flzpdDr1ySefqPDwcNW0aVP117/+VSml1Pr162scZ126dFFKXf+1obS0VLm7uyu9Xq+8\nvb2Vj4+PysvLUzNmzDDnXymlVq1apWJjY5W/v7+Kj49Xhw4dqvFc+Mc//qE6deqk/Pz81NixY1VF\nRUWtuRC2S4ow0SgiIyPV5s2blVJKnThxQnXo0EFNnz5dnTp1SgUGBqr169crpZT65ptvVGBgoCoq\nKlJKaS/0ERERKj09XRmNRlVVVaWmTJmiXn/9dfN1v/766+rOO+9UhYWFqrCwUN11113m87dt26ac\nnZ3Vyy+/rAwGgyovL1czZsxQ7u7uatOmTaq6ulpNmjRJRUREqLfeektVV1er//znPyoqKsp8/WvX\nrlXHjh1TSin17bffKk9PT7Vnz54a1z9jxgxVXV2t1q1bpzw9PVVJSYlSSqmnnnpKDRgwQOXl5Smj\n0ah+/PFHVVlZed37XVhYeM1jZzAYVOvWrdXs2bNVVVWV2rp1q/Lx8VFHjhxRSik1c+ZMNXHixOs+\n9rt371Y7d+5URqNRZWdnq/bt26t333231st+9NFHatiwYaq8vFyZTCa1Z88edeHCBaWUUvHx8Wr+\n/PlKKe1N19nZWSUlJSmTyaRee+011aJFC3OhsGnTJuXj46MuXbqklNLedH18fNT27dvNRfOVxdOV\n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\n888cPnwY0B6HgIAAXF1dSU1NZcmSJeY3thvd75CQELKysq57u9fbNzw8nB49ejBjxgyqqqr4/vvv\nWbNmjXm/tm3bUlFRwbp166iqquIvf/kLlZWV5vNvJW8Ajz/+OB999BGpqakopbh06RJr16694UjO\n9YSEhHDq1Cmqqqpued+6aujnQ22eeOIJ/vznP3PixAlAG2n7+uuv67RvaGgo2dnZ5tePm702hISE\ncPbs2esWjA899BBr165l69atVFVV8c477+Du7s5dd91V6+Vv5XVL2A4pwoRFhYWFsWrVKt566y2C\ng4MJDw/nnXfeqfGCU9tI1pWnvfbaa/To0YNOnTrRqVMnevTowWuvvVbn/a93GQAfHx/mzp3LmDFj\naNKkCZ9//nmNfkq17Xulf/zjH8TFxXHHHXcQGBjIK6+8gslkuu79rm2EysXFhdWrV7N+/XqCgoL4\nwx/+wGeffUbbtm2ve3+ujmHJkiX4+vry+9//nnHjxl338qdPn+ahhx7Cz8+P2NhYc4+sq9XlMbz6\nvMTERGbNmkVgYCB79+5l0aJFte77t7/9jejoaHr37o2fnx/33HMPGRkZ173eK3O1adMmkpOTadGi\nBc2aNeOVV17BYDAA8MEHHzB9+nR8fX158803a4wQ3eh+P/fcc3zxxRc0adKE559//pYesyVLlrBz\n506aNGnCG2+8waRJk8zPbT8/Pz744AOmTp1KWFgY3t7eNaYXb5a3qx/v7t2785///Ic//OEPNGnS\nhDZt2vzmUcyEhAQ6dOhAaGhojan767Hk8+FWbve5555j+PDhDB48GF9fX+68805SU1PrtO9DDz0E\naNOfPXr0uOlrQ7t27Rg/fjytWrWiSZMm5Ofn13icYmJiWLRoEc888wxBQUGsXbuW1atX1zr1fzk2\nGQ2zPzrVwOW10WikR48ehIWFsXr1aoqLixk7diw5OTlERkaybNky/P39Aa2b8IIFC3BycmLu3LkM\nHjy4IUMTQjSSRx55hLCwMN58801Lh2JRs2bNIjMzs8E6zdsKeT4IoWnwkbB//etfxMbGmiv4OXPm\nmD/JJCQkMGfOHADS09NZunQp6enpbNiwgaeeeqpOi3GFENZPplI08jho5HEQQtOgRdipU6dYt24d\nU6dONR90X3/9NZMnTwZg8uTJrFy5EoBVq1Yxfvx4XFxciIyMJDo6usYwsRDCdslUikYeB408DkJo\n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\nSUVORK5CYII=\n", + "text": [ + "" + ] + } + ], + "prompt_number": 32 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Without making any modifications to the original code in order to account for the strengths of Numba (Numpy) and Cython (static type declarations), we see that Cython performs significantly better than Numba." ] }, { @@ -1533,9 +1620,45 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "First, our \"simple\" approach using Cython from the previous section:" + "Here is our \"classic\" approach in Python:" ] }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def lstsqr(x, y):\n", + " \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n", + " x_avg = sum(x)/len(x)\n", + " y_avg = sum(y)/len(y)\n", + " var_x = sum([(x_i - x_avg)**2 for x_i in x])\n", + " cov_xy = sum([(x_i - x_avg)*(y_i - y_avg) for x_i,y_i in zip(x,y)])\n", + " slope = cov_xy / var_x\n", + " y_interc = y_avg - slope*x_avg\n", + " return (slope, y_interc)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 44 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Cython-compiled version of it:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%load_ext cythonmagic" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, { "cell_type": "code", "collapsed": false, @@ -1554,7 +1677,7 @@ "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 54 + "prompt_number": 45 }, { "cell_type": "markdown", @@ -1737,6 +1860,339 @@ "source": [ "This is a pretty significant performance gain. The \"Cython + type declarations\" approach sped up our initial Python code 25 times." ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Appendix III: Cython performance after replacing list comprehensions by explicit for loops" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[[back to top](#sections)]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "List, set and dictionary comprehensions in Python do not only look prettier and are easier to read (at least most of the time) than nested loop structures, but they also come with some small performance benefits. \n", + "Does this also apply in Cython? Let's check it out." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "This is the code for our \"classic\" least squares approach that we have been using in the previous sections:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def lstsqr_comprehensions(x, y):\n", + " \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n", + " x_avg = sum(x)/len(x)\n", + " y_avg = sum(y)/len(y)\n", + " var_x = sum([(x_i - x_avg)**2 for x_i in x])\n", + " cov_xy = sum([(x_i - x_avg)*(y_i - y_avg) for x_i,y_i in zip(x,y)])\n", + " slope = cov_xy / var_x\n", + " y_interc = y_avg - slope*x_avg\n", + " return (slope, y_interc)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 46 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "And here is a version where I replaced the list comprehensions by for-loops:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def lstsqr_loops(x, y):\n", + " \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n", + " x_avg = sum(x)/len(x)\n", + " y_avg = sum(y)/len(y)\n", + " var_x = 0\n", + " for x_i in x:\n", + " var_x += (x_i - x_avg)**2\n", + " cov_xy = 0\n", + " for x_i, y_i in zip(x,y):\n", + " cov_xy += (x_i - x_avg)*(y_i - y_avg)\n", + " slope = cov_xy / var_x\n", + " y_interc = y_avg - slope*x_avg\n", + " return (slope, y_interc)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 48 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Finally, the Cython versions of the two functions (with and without using list comprehensions) that we have defined above:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%load_ext cythonmagic" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%%cython\n", + "\n", + "def cy_lstsqr_comprehensions(x, y):\n", + " \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n", + " cdef double x_avg, y_avg, var_x, cov_xy, slope, y_interc, x_i, y_i\n", + " x_avg = sum(x)/len(x)\n", + " y_avg = sum(y)/len(y)\n", + " var_x = sum([(x_i - x_avg)**2 for x_i in x])\n", + " cov_xy = sum([(x_i - x_avg)*(y_i - y_avg) for x_i,y_i in zip(x,y)])\n", + " slope = cov_xy / var_x\n", + " y_interc = y_avg - slope*x_avg\n", + " return (slope, y_interc)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 49 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%%cython\n", + "\n", + "def cy_lstsqr_loops(x, y):\n", + " \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n", + " cdef double x_avg, y_avg, var_x, cov_xy, slope, y_interc, x_i, y_i\n", + " x_avg = sum(x)/len(x)\n", + " y_avg = sum(y)/len(y)\n", + " var_x = 0\n", + " for x_i in x:\n", + " var_x += (x_i - x_avg)**2\n", + " cov_xy = 0\n", + " for x_i, y_i in zip(x,y):\n", + " cov_xy += (x_i - x_avg)*(y_i - y_avg)\n", + " slope = cov_xy / var_x\n", + " y_interc = y_avg - slope*x_avg\n", + " return (slope, y_interc)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 50 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
\n", + "We will generate some sample data for different sample sizes and take a look at the results for the regular Python functions, and the Cython code separately." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import timeit\n", + "import random\n", + "random.seed(12345)\n", + "\n", + "funcs = ['lstsqr_comprehensions', 'lstsqr_loops',\n", + " 'cy_lstsqr_comprehensions', 'cy_lstsqr_loops'] \n", + "\n", + "orders_n = [10**n for n in range(1, 6)]\n", + "times_n = {f:[] for f in funcs}\n", + "\n", + "for n in orders_n:\n", + " x = [x_i*random.randrange(8,12)/10 for x_i in range(n)]\n", + " y = [y_i*random.randrange(10,14)/10 for y_i in range(n)]\n", + " for f in funcs:\n", + " times_n[f].append(timeit.Timer('%s(x,y)' %f, \n", + " 'from __main__ import %s, x, y' %f).timeit(1000))" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 52 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "plt.figure(figsize=(8,6))\n", + "plt.plot(orders_n, times_n['lstsqr_comprehensions'], alpha=0.5, \n", + " label='list comprehensions', marker='o', lw=2)\n", + "plt.plot(orders_n, times_n['lstsqr_loops'], alpha=0.5, \n", + " label='for-loops', marker='o', lw=2)\n", + "plt.xlabel('sample size n')\n", + "plt.ylabel('time in ms')\n", + "plt.legend(loc=2)\n", + "plt.grid()\n", + "plt.xlim([0,max(orders_n) + max(orders_n) * 0.1])\n", + "plt.title('Performance comparison list comprehensions and for-loops')\n", + "plt.show()\n", + "\n", + "plt.figure(figsize=(8,6))\n", + "plt.plot(orders_n, times_n['cy_lstsqr_comprehensions'], alpha=0.5, \n", + " label='list comprehensions (Cython', marker='o', lw=2)\n", + "plt.plot(orders_n, times_n['cy_lstsqr_loops'], alpha=0.5, \n", + " label='for-loops (Cython)', marker='o', lw=2)\n", + "plt.xlabel('sample size n')\n", + "plt.ylabel('time in ms')\n", + "plt.legend(loc=2)\n", + "plt.grid()\n", + "plt.xlim([0,max(orders_n) + max(orders_n) * 0.1])\n", + "plt.title('Performance comparison list comprehensions and for-loops in Cython')\n", + "plt.show()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nURKDPTGQxwAAAABJRU5ErkJggg==\n", + "text": [ + "" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "iVBORw0KGgoAAAANSUhEUgAAAeoAAAGJCAYAAABFDXDOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8TXf++PFXQoJE9kgiO0ntgtZSFLG2lNYoKtagqr/B\nTKtT7bSKKqodVBedfnVUSmyli30pGqNUaRGqxJpYEksESSSyfn5/nMltQja5N7n3JO/n4+Eh5957\nznmf9z03n5zz/tzPx0oppRBCCCGERbI2dwBCCCGEKJo01EIIIYQFk4ZaCCGEsGDSUAshhBAWTBpq\nIYQQwoJJQy2EEEJYMGmoi3Ht2jU6d+6Mo6Mjr732mrnDEUXYu3cvjRo1qtB9hoaGsmTJEgBWrFjB\nk08+WaH7tyT5c1FR+vTpw/Llyyt0n6YUGBjIrl27Cn0uPT2dfv364ezszPPPP2/0vmbMmMGIESOM\n3o6pWNJ7Fx4ezttvv23uMEpU6RrqwMBA7OzscHBwwMvLi9GjR3P37t0ybWvx4sV4eHiQnJzMv/71\nLxNHKkylU6dOnDp1qkL3aWVlhZWVFQDDhg1j+/btJa6jl18KDyt/LirKli1bLKrxeVjF5WzdunVc\nv36dpKQk1qxZY5J9WRJj37uVK1fSunVrHBwc8Pb2pk+fPuzbt6/E9SIiIujUqVOBx8xx7pZFpWuo\nrays2LRpEykpKRw+fJhff/2VWbNmPdQ2lFLk5uYSFxdH48aNyxRHdnZ2mdYTD0fyXL4kvxUvLi6O\nBg0aYG398L+eC3u/KtOYVgsWLOCVV15h6tSpXL9+nUuXLjFhwgQ2bNhg7tDKVaVrqPPz9vbmqaee\n4vfffwfgwIEDdOjQARcXF1q2bMmePXsMrw0NDWXq1Kk88cQT2NvbM2rUKJYtW8YHH3yAg4MDu3fv\nJjMzk5dffhkfHx98fHx45ZVXyMzMBCAqKgpfX18++OAD6taty5gxY3jnnXcYNGgQI0aMwNHRkZCQ\nEM6cOcN7772Hp6cnAQEB/PDDD4YYli5dSpMmTXB0dCQoKIjFixcbnsvb/oIFC/D09MTb25uIiAjD\n8+np6bz66qsEBgbi7OxMp06duHfvXonHfb9Lly4xYMAAPDw8cHd3Z9KkSQDk5uYya9YsAgMD8fT0\nZNSoUSQnJwMQGxuLtbU1ERER+Pv74+bmxueff86hQ4cICQnBxcXFsB3Q/rLt2LEjkyZNwtnZmcaN\nG7N79+6HykNenseOHUtUVBR+fn6G17z//vv4+vri6OhIo0aNDNvOyMgo8f0rKr/Fyf+XulKKV155\nBU9PT5ycnAgJCeHEiRMsXryYlStXGs6nZ599ttBtnThxgp49e+Lm5oaXlxfvvfdeqWP/17/+hYeH\nB97e3nz//fds2bKFBg0a4Obmxty5cw37mDFjBgMHDmTIkCE4Ojry2GOPcezYMcPzgYGBfPDBB4SE\nhODg4EBubm6J51BsbCxPPPEEjo6OPPnkk9y8edPwXEmfu2nTphW67r179xg+fDju7u64uLjQtm1b\nbty4YVgv73a7UqrEc3PZsmUEBARQp04d5syZY9j/wYMHad26NU5OTnh5efHqq68W+r7cvn2bvn37\n4uHhgaurK/369ePKlSulOg6A5cuXExAQgLu7e4H932/69Om8++67rFmzBgcHB5YuXVqq4/vyyy8J\nCAigR48eRW47z4YNG2jatCkuLi507dq1wN2okydPEhoaiouLC82aNWPjxo2G58LDw3nppZfo1asX\njo6OhIaGcvHiRcPzhZ33hcn/3kVERPDEE0/w2muv4erqSv369dm2bVuh6925c4fp06fz2Wef0b9/\nf2rVqkW1atV4+umnef/997l69Sr29vYkJSUZ1jl8+DAeHh78/vvvvPTSS/z88884ODjg6upqeE1S\nUhJ9+/bF0dGRxx9/nPPnzxue279/P23atMHZ2Zm2bdvy888/FziO4t5zk1KVTGBgoNq5c6dSSqmL\nFy+qpk2bqmnTpqnLly8rNzc3tXXrVqWUUj/88INyc3NTiYmJSimlunTpogICAtQff/yhcnJyVFZW\nlgoPD1dvv/22Ydtvv/22at++vbpx44a6ceOG6tChg+H5H3/8UVWvXl298cYbKjMzU6Wnp6vp06er\nmjVrqh07dqjs7Gw1cuRIFRAQoObMmaOys7PVF198oerVq2fY/ubNm9X58+eVUkrt2bNH2dnZqcOH\nDxfY/vTp01V2drbasmWLsrOzU7dv31ZKKfXXv/5Vde3aVcXHx6ucnBz1888/q4yMjCKP+8aNGw/k\nLjs7W4WEhKjJkyertLQ0de/ePbVv3z6llFJLlixRwcHB6sKFCyo1NVUNGDBAjRgxQiml1IULF5SV\nlZX6f//v/6mMjAy1Y8cOZWtrq/r3769u3Lihrly5ojw8PNSePXuUUkotXbpUVa9eXS1cuFBlZ2er\nNWvWKCcnJ5WUlFTqPOTP848//qh8fX2VUkqdOnVK+fn5qYSEBKWUUnFxcercuXOlfv+Kyu/9QkND\n1ZIlSwzH88QTTyillNq2bZt67LHH1J07dwzx5MVy//l0v+TkZOXl5aUWLFigMjIyVEpKivrll19K\nHfu7775rOK/c3NzU0KFDVWpqqjpx4oSqVauWio2NVUopNX36dGVjY6O++eYblZ2drebNm6fq1aun\nsrOzlVJKBQQEqFatWqnLly+re/fuleqzExQUpM6cOaPS09NVaGioeuONN5RSqlTrBgcHF7ru559/\nrvr166fS09NVbm6uOnz4sEpOTn4g/6U5N1988UV17949FR0drWrUqKFOnTqllFLq8ccfV5GRkUop\npe7evasOHDhQ6Htz8+ZN9e2336r09HSVkpKiBg0apPr37294vrjjOHHihKpdu7bau3evysjIUJMn\nT1bVq1dXu3btKnRfM2bMMMRf2uMbNWqU4TN7v+nTp6vhw4crpZSKiYlR9vb2aufOnSo7O1t98MEH\nKjg4WGVlZanMzEwVFBSk3nvvPZWVlaV2796tHBwcVExMjFJKqVGjRikHBwfDcfz9738v1Xl/v/s/\nOzY2Nuo///mPys3NVf/+97+Vt7d3oett3bpVVa9eXeXk5BT6vFJK9enTR/373/82LL/88svqb3/7\nm1JKqYiICEO8eUaNGqXc3NzUoUOHVHZ2tho2bJgaMmSIUkp7z52dnVVkZKTKyclRq1atUi4uLobf\nU8W956ZW6RrqgIAAVbt2beXs7KwCAgLUhAkTVHp6upo7d26Bk18ppZ588kn11VdfKaW0k2f69OkF\nng8PD1dTp041LAcFBRl+4Sil1Pbt21VgYKBSSvtlaWtrqzIyMgzPT58+XfXq1cuwvGHDBlW7dm2V\nm5urlNJ+MVtZWRlO7vv1799fffTRR4bt16pVq8BJ6uHhoX755ReVk5OjatWqpY4dO/bANko67vz2\n79+v6tSpU+gHoVu3bgU+ADExMcrGxkbl5OQYflnEx8cbnndzc1Nff/21Yfm5555TCxcuVEppH877\nP4xt27ZVy5cvL1Ue7s9z/ob6zJkzysPDQ+3cuVNlZmYW2E5J719R+S1MUQ31rl27VIMGDdSBAwce\nyOP959P9Vq5cqR599NFCnytN7PefVwcPHjS8/rHHHlPr169XSmnnZfv27Q3P5ebmqrp166qffvpJ\n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\nL1HPoRhem1SIm6wStV6vh91u58d2uz3qL5pUFAqFsHbtWtx///1Ys2YNAPEvyP7+fgBAX18fiouL\nAVwav+7ubhgMBuj1enR3d1/y+IXXdHV1ARB/IY+MjECr1cbls8XDkSNHsHv3blRWVmLTpk04ePAg\n7r//forhBBgMBhgMBixaJN4RcN26dThx4gRKS0sphuP00UcfYdmyZdDpdFCpVLjnnnvw/vvvUwyv\n0VT//9XpdLLKR7JK1AsXLkR7eztsNhuCwSBeeOEFrF69WuppSYYxhq985SuYPXs2tm3bxh9fvXo1\n/vSnPwEQuxIvJPDVq1dj586dCAaDsFqtaG9vx+LFi1FaWor8/HwcO3YMjDH8+c9/xl133XXJ93rp\npZfQ1NQU5085tR5//HHY7XZYrVbs3LkTt9xyC/785z9TDCegtLQU5eXlOHv2LABg//79mDNnDlat\nWkUxHKeZM2fi6NGj8Pl8YIxh//79mD17NsXwGsXj/++tt96Kffv2weVyYXh4GG+//TZWrlwpwaeF\nvLq+GWPszTffZDU1NcxkMrHHH39c6ulI6t1332UKhYLNnz+f1dfXs/r6evbWW28xh8PBmpqamNls\nZitWrIjqRHzssceYyWRitbW1bO/evfzxjz76iNXV1TGTycQeffRR/rjf72fr169n1dXVbMmSJcxq\ntcbzI8ZVS0sL7/qmGE5MW1sbW7hwIZs3bx67++67mcvlohhO0BNPPMFmz57N6urq2AMPPMCCwSDF\ncBw2btzIysrKmFqtZgaDgT3zzDNxi9szzzzDqqurWXV1NWtubo7L570cuuEJIYQQImOyOvVNCCGE\nkGiUqAkhhBAZo0RNCCGEyBglakIIIUTGKFETQgghMkaJmhBCCJExStSEpKjGxkYcP348pu+xZ8+e\nlN+OlpCpppJ6AoQQaUzGPZJXrVrF9/gmhEwNWlETIhNerxd33HEH6uvrMXfuXLz44osAgJ/97GdY\nvHgx5s6di4cffpg/v7GxEd/5znewaNEizJo1Cx9++CHuvvtu1NTU4Cc/+QkAcde1mTNn4r777sPs\n2bOxfv16+Hy+S9573759WLZsGRYsWIB7770XXq/3kuc89dRTmDNnDubPn4/NmzcDAJqbm/Hoo48C\nAOrr69HQ0ICGhgZkZ2fj3XffhdfrxdatW7FkyRJcd9112L179yXft6WlBY2NjVi/fj1mzZqF++67\nL/ZgEpJMJLsnGiEkyksvvcQeeughfjwyMsIYY8zpdPLH7r//frZnzx7GGGONjY3shz/8IWOMsSef\nfJKVlZWx/v5+FggEmMFgYE6nk1mtVqZQKNiRI0cYY4xt3bqV/eIXv+CvP378OBsaGmI33XQTGxsb\nY4wxtmPHDvazn/3skvlNnz6dBYPBqLk1Nzezb3zjG1HP2717N7vppptYKBRi//mf/8n+8pe/MMYY\nGx4eZjU1Nczr9UY9/9ChQ6ygoID19PQwQRDY9ddfz1pbW68lhIQkJVpREyIT8+bNw9tvv40f/vCH\naG1tRX5+PgDg4MGDWLp0KebNm4eDBw/i9OnT/DUXNq2pq6tDXV0dSkpKkJ6ejqqqKr7zT3l5Oa6/\n/noAwH333YfW1lb+esYYjh49itOnT2PZsmVoaGjAs88+y3cT+uz8Nm/ejL/+9a9IS0u77Gdob2/H\n97//fezatQsqlQr79u3Djh070NDQgOXLlyMQCETtSHTB4sWLMX36dCgUCtTX18Nms11bEAlJQlSj\nJkQmzGYzTp48iTfeeAM//vGP0dTUhO9///v4+te/juPHj0Ov1+O//uu/4Pf7+WsyMjIAAEqlkn99\n4TgcDgOI3uedMXbZuvSKFSvw3HPPXXV+b7zxBg4fPow9e/bgsccew6lTp6L2+PZ4PNiwYQP+8Ic/\noKSkhD/+yiuvwGw2X/V7f3ruaWlpfO6EEKpREyIbfX19yMzMxJe+9CX8x3/8B06ePMmTsk6ng8fj\n4XXriejq6sLRo0cBAM899xxuvPFGPqZQKLB06VK89957sFgsAMRaeXt7e9T3YIyhq6sLjY2N2LFj\nB0ZGRuDxeKKes3XrVjz44IO44YYb+GMrV67EU089xY9Pnjw54fkTkupoRU2ITJw6dQrf+973oFQq\noVar8bvf/Q4FBQV46KGHUFdXh9LSUixZsuSyr71aB3dtbS2efvppbN26FXPmzMEjjzwSNV5UVITm\n5mZs2rQJgUAAAPDYY49FrYIjkQjuv/9+jIyMgDGGb33rWygoKODv29XVhZdffhnt7e145plnAAB/\n/OMf8ZOf/ATbtm3DvHnzIAgCqqqqLmkou9zcY+1GJySZ0DaXhCQxm82GVatW4dSpU1JPhRByjejU\nNyFJjlanhCQ2WlETQgghMkYrakIIIUTGKFETQgghMkaJmhBCCJExStSEEEKIjFGiJoQQQmSMEjUh\nhBAiY/8fzj2UNX7XML4AAAAASUVORK5CYII=\n", + "text": [ + "" + ] + } + ], + "prompt_number": 71 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "As we can see in the first plot, the list comprehensions lead to a slightly increased performance in regular Python code. \n", + "But the second plot is quite interesting: List comprehensions in Cython are significantly slower than the regular for-loop structures.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Let us do a quick comparison by how much we were able to improve the performance of the simple least square implementation using Cython so far:\n", + "
" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import random\n", + "random.seed(12345)\n", + "\n", + "x = [x_i*random.randrange(8,12)/10 for x_i in range(500)]\n", + "y = [y_i*random.randrange(8,12)/10 for y_i in range(100,600)]" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 72 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import timeit\n", + "\n", + "funcs = ['lstsqr_comprehensions', 'cy_lstsqr_comprehensions', \n", + " 'cy_lstsqr_loops'] \n", + "labels = ['list comprehensions', 'list comprehensions (Cython)', \n", + " 'for-loops (Cython)']\n", + "\n", + "times = [timeit.Timer('%s(x,y)' %f, \n", + " 'from __main__ import %s, x, y' %f).timeit(1000)\n", + " for f in funcs]\n", + "\n", + "times_rel = [times[0]/times[i+1] for i in range(len(times[1:]))]" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 73 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#%pylab inline\n", + "#import matplotlib.pyplot as plt\n", + "\n", + "plt.figure(figsize=(8,6))\n", + "x_pos = np.arange(len(funcs[1:]))\n", + "plt.bar(x_pos, times_rel, align='center', alpha=0.5, color=\"green\")\n", + "plt.xticks(x_pos, labels[1:], rotation=90)\n", + "plt.ylabel('relative performance gain')\n", + "plt.title('Performance gain compared to the classic least square implementation')\n", + "ftext = 'For-loops in Cython are {:.2f}x faster then list comprehensions'\\\n", + " .format(times[1]/times[2],1)\n", + "plt.figtext(.15,.8, ftext, fontsize=11, ha='left')\n", + "plt.xlim([-1,len(funcs[1:])])\n", + "plt.ylim([0,max(times_rel)*1.2])\n", + "plt.grid()\n", + "plt.show()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nxoyR1NRUSUtLk3379olIVkKpXr26nD9/XpKTk6V79+4yYMAAEfnfCeDtt9+Whw8fytatW8XR0VG6\ndesmN27ckCtXroi3t7fs3r1bialEiRIyd+5cMRgMsmrVKnF1dVVOKEXZ/jn379y5c+X555+XK1eu\nSHp6ugwbNkz69u0rIiInT54UZ2dn2bt3rzx8+FDGjBkjJUqUyDdZi0ietpaeni7VqlWT6dOnS0ZG\nhuzYsUNcXFwkNjY23+lzbvtsOp1OXnrpJbl7965cvHhRvLy8ZMuWLSIisn79eqlevbrExMSI0WiU\nTz/9VJo3b57vvOPj48XFxUVWrlwpBoNBbt26Jf/8848Sd/aJqrD2kZycLGXLlpW4uDgREUlISJCT\nJ0+KiEifPn1k2rRpIpLVBrP3ffY6ZCfrgtp4bjmTtdFolIYNG8rUqVMlIyNDzp07J1WrVpXffvtN\nRLK+nB48eFCMRqPEx8dL7dq1Ze7cuSIismXLFmnUqJHy5TAmJkauXbuW7/7KrbBpe/fuLb1795bU\n1FQ5ceKEVKxYUVq2bCki+SfrnPv2zJkzsm3bNklPT5cbN25Iq1atZPTo0cpn/f39JSgoSC5fvixp\naWmPdPyLmHZ2HvX8FRwcLBUrVpSTJ09KSkqK9OjRQ/r375/venXr1k3eeustSU1NlevXr0uTJk2U\nL8fZx2lkZKRkZmbKpEmTpGLFisoXqa1bt4qLi4ukpKSISNaXopdfflnu3Lkj9+/fl5deekk+/PBD\npS0Udt7Mbz+uWbNG2VerVq0SJycnSUhIEBGRyMhI5YtVtpzz2L59u3h6esrRo0fl4cOH8u6770qr\nVq2UzxZ2TD6OpzpZ+/v7i7Ozs7i5uYm/v7+888478uDBA5kxY4Zyks/WoUMH5RtaSEiITJkyxWR8\nzhORiEi1atVMeoe//fab6PV6EclqFI6OjiYnjylTpkj79u2V4aioKHF2dpbMzEwREbl3757odDrl\ngM6tW7du8tVXXynzL126tMlB7O3trZxoSpcuLcePH88zD3PrndPu3bulYsWKJn9r0aJFgSelo0eP\nKt8uRfIm6+rVqyvjUlJSRKfTSWJiYp75/Pnnn+Ll5WWybtlat24t3377rTIcGxsrDg4OYjQalRNA\nzm+uHh4esnr1amW4R48eysl38eLFeb4wNGnSRJYtW5bv+uXe/rn3b+3atU2S79WrV8XBwUEMBoN8\n8sknSuLOXn9HR8dCk3XOtrZnzx7x8fEx+Uzfvn0lPDw83+lDQkKU3lc2nU5nkvh69eolM2fOFBGR\njh07miR3o9EoZcqUkYsXL+aZ97Rp06R79+5FijunnO0jOTlZ3NzcZO3atZKammryuYEDB8rQoUNN\neuE51+Hs2bOFtvHccibrAwcOiJ+fX571GTx4cL7TzpkzR1555RURyTrx1qxZUw4cOJCnbRa23iIi\nO3bsyHdag8EgDg4OJl+6Jk6cWGjPOr8vYtnWrVsnQUFByrBerze54vYox3/29DmT9aOcv0JCQpQk\nKZLVE3V0dJTMzEyT9UpISJCSJUuaXBX5z3/+I6GhoSKSdZzWqFFDGXf8+HHR6XRy/fp15W8eHh5y\n7NgxyczMFCcnJ+ULnUjW+ST7S0Rh500R8/tRRKRBgwayYcMGJbbCkvWQIUNk/Pjxyrjk5GRxcHBQ\nrlrld0zOmDGj0OUX5qmvWW/YsAF37txBfHw85s2bh1KlSuHChQtYs2YN3N3dlX/79u1DQkKCMq25\nO0ivXr0Kf39/ZdjPzw9Xr15Vhr28vODo6Ggyjbe3t/L/0qVLw9PTU6kvli5dGgCQnJwMAPj111/R\nrFkzeHh4wN3dHZs3b8atW7eU6T08PGBn97/dU6ZMGSQnJ+PmzZtIS0tDtWrV8sRclPXOuX4VK1Y0\n+VvlypWVmmRqaiqGDRsGvV4PV1dXBAcH4+7duwXWLH18fExizbmuOV26dAn+/v4m65bt2rVreba5\nwWBAYmKi8rfy5csr/y9dunSe4ZSUFGU49/r5+/vj2rVrAMxv/9z7Nz4+Hq+88oqyXevUqYMSJUog\nMTER165dQ6VKlUzW38PDI7/NlK+rV6/maY/+/v64cuVKgdPkV7fOvQ+yt/+FCxcwatQoJfbs2PKb\n/+XLl1G1alWzMRfWPpycnLBq1Sp899138PX1RZcuXRAbGwsA+PzzzyEiaNKkCQICArB48eI88y6s\njRfmwoULuHr1qkn7nz59Oq5fvw4AiIuLQ5cuXVChQgW4urrio48+UvZ569atMWLECLzzzjsoX748\nhg0bVuQb3kJDQ/Od9saNGzAYDCb71s/Pr8jrk5iYiD59+qBSpUpwdXXFgAEDTNooYHoee5TjPz+P\ncv7KvWw/Pz9kZGTg5s2bJvO8cOECMjIyUKFCBSWmt956Czdu3FA+k/sYBrKOv5x/S05Oxo0bN5Ca\nmopGjRop8+rUqZPJMgs6bxZk6dKlCAoKUuZ34sSJPNu4ILnPV05OTvDw8DA5rgo6Jh/HU52sC+Ln\n54cBAwbgzp07yr/79+/jgw8+UD5j7iYdX19fk8dILl68CF9f3wKnf5Sbfh4+fIgePXrggw8+wPXr\n13Hnzh107ty5SDfveHp6olSpUjhz5kyecUVZ72wVKlTIc7K+ePGish5ffPEF4uLicOjQIdy9exe7\nd++GZF2JKfJ65qdy5cq4ePEijEZjnnH5bfMSJUqYHMyPIvf6XbhwAb6+vkXa/rn3p5+fH7Zs2WKy\nbVNTU+Hr64sKFSrg0qVLymdTU1MLPeBzz9vX1xeXLl0yWf6FCxdMvgAUNr05fn5+WLhwoUnsKSkp\naNasWZ7PVq5cGWfPnjUbu7n20b59e2zduhUJCQmoVasW3nzzTQBZJ+aFCxfiypUrWLBgAYYPH57n\nkbPC2nhhKleujCpVqpis571797Bp0yYAWY/d1KlTB2fOnMHdu3fx2WefmTxe9O677+Lw4cOIjo5G\nXFwcZs2aZbLOhclvWm9vb5QoUQIXL15UPpfz/9lPraSmpip/y5lYJ06cCHt7e5w4cQJ3797FsmXL\n8jwOlTO2Rzn+1ZB7vRwcHODp6WnymcqVK6NkyZK4deuWEtPdu3fx77//PvLyPD09Ubp0aURHRyvz\nSkpKKvITPLn344ULFzB06FDMnz8ft2/fxp07dxAQEKC04UfNESkpKbh161aeToJanslk3b9/f2zc\nuBFbt26F0WhEWloadu3aZXLyzp10cg/37dsXn376KW7evImbN2/i//7v/zBgwIACl/koSSw9PR3p\n6enw9PSEnZ0dfv31V2zdurVI09rZ2WHIkCEYM2YMrl27BqPRiP379yM9Pb1I652tefPmsLe3x7x5\n82AwGLBhwwb89ddfyvjk5GSULl0arq6uuH37Nj755JMir19hmjZtigoVKmDChAlITU1FWloa/vzz\nTwBZ23zOnDmIj49HcnIyJk6ciD59+uTbCy9Izv1w/fp1REREICMjA2vWrEFMTAw6d+78WNv/rbfe\nwsSJE5UT1I0bNxAVFQUAePXVV7Fp0ybs27cP6enp+Pjjjwt9xrR8+fImCapZs2YoU6YMPv/8c2Rk\nZGDXrl3YtGkT+vTpU+D0hSXU7O2QvS3eeustTJs2DdHR0QCAu3fvYs2aNflO169fP2zbtg1r1qyB\nwWDArVu3cOzYsTzzLKx9XL9+HRs2bEBKSgocHBzg5OQEe3t7AMCaNWtw+fJlAICbmxt0Ol2e/VtY\nGy9MkyZN4OLigs8//xwPHjyA0WjEiRMncPjwYSVmFxcXlClTBjExMfj222+VE/Lhw4dx8OBBZGRk\noEyZMihVqpQSc+79lVtB09rZ2aF79+4IDw/HgwcPEB0djaVLlyrL9PLyQsWKFbFs2TIYjUb8+OOP\nJvs1OTkZTk5OKFu2LK5cuaJ8eSjIoxz/T0pEsHz5cpw6dQqpqan4+OOP0bNnzzwJrkKFCmjfvj3G\njBmD+/fvIzMzE2fPnn2s57vt7Ozw5ptvYvTo0UrP/MqVK0U+d+bejykpKdDpdPD09ERmZiYWL15s\n8jhb+fLlcfnyZWRkZJisd/Yx0LdvXyxevBjHjh3Dw4cPMXHiRDRr1qzAqydP2tF5JpN1pUqVsGHD\nBkybNg3e3t7w8/PDF198UWjPKfczpJMmTULjxo1Rr1491KtXD40bN8akSZOKPH1BnwGyXv4QERGB\nXr16oVy5cvjpp5/w8ssvFzptTrNnz0ZgYCCee+45eHh44MMPP0RmZmaB651f4nBwcMDPP/+MRYsW\nwd3dHStWrECXLl2US7+jR4/GgwcP4OnpiebNm6NTp04FxlSUdc9mZ2eHjRs34syZM/Dz80PlypWx\nevVqAMCQIUMwYMAAtGrVClWrVkWZMmXw9ddfF2mb5PeZpk2b4vTp0/Dy8sLkyZOxdu1auLu7P9b2\nHzVqFLp27Yr27dujbNmyeP7553Ho0CEAQJ06dTB//ny89tpr8PX1Rbly5Qots7z++uuIjo6Gu7s7\nunfvDgcHB2zcuBG//vorvLy8MGLECCxbtgw1a9bMd/pRo0bhv//9L8qVK4fRo0cXuB2y16Fbt24Y\nP348+vTpA1dXVwQGBuK3337Ld7rKlStj8+bN+OKLL+Dh4YGgoCAcP348zzwLax+ZmZmYM2cOKlas\nCA8PD+zdu1d5PvXw4cNo1qwZXFxc8PLLLyMiIgJ6vT7PNi+ojRe0rgBgb2+PTZs24Z9//kHVqlXh\n5eWFoUOHKj2v2bNn4z//+Q/Kli2LoUOHmnwZunfvHoYOHYpy5cpBr9fD09NTeTlS7v2VW2HTzps3\nD8nJyfDx8cGQIUMwePBgk/PQ999/j1mzZsHT0xPR0dF44YUXlHFTpkzBkSNH4Orqipdeegk9evQo\n9Bh4lOM/v21Y1PNX9v8HDBiAsLAwVKhQAenp6YiIiMj3s0uXLkV6ejrq1KmDcuXKoWfPnsoVhEc5\ndwDAzJkzUb16dTRr1gyurq5o164d4uLiijRt7v1Yp04dvP/++3j++efh4+ODEydOoEWLFsrn27Rp\ng7p168LHx0cpEeSMt02bNpg6dSp69OgBX19fnD9/HitXrix0+z3JY5c6edJ0T8+Mpk2bYvjw4Rg0\naFBxh/LE8nuhAVFxe1baZWhoKAYMGIAhQ4YUdyg245nsWVPR7NmzBwkJCTAYDFiyZAlOnDiBjh07\nFndYRPQUYD9PW0/160bpycTGxqJXr15ISUlBtWrV8N///vexb+ayNpZ+NSbR43iW2uWzsh5PC14G\nJyIisnK8DE5ERGTlrPYyeEhICHbv3l3cYRAREWkiODgYu3btynec1V4G1+l0vIGBVBUWFobIyMji\nDoOeEWxPpLbC8h4vgxMREVk5JmuyGdkv3yBSA9sTaYnJmmxGSEhIcYdAzxC2J9ISkzUREZGVY7Im\nIiKycrwbnIiIyArwbnAiIqKnGJM12YyCXjZA9DjYnkhLTNZERERWjjVrIiIiK8CaNRER0VOMyZps\nBmuMpCa2J9ISkzUREZGVY82aiIjICrBmTURE9BRjsiabwRojqYntibTEZE1ERGTlWLMmIiKyAqxZ\nExERPcWYrMlmsMZIamJ7Ii0xWRMREVk51qyJiIisAGvWRERETzEma7IZrDGSmtieSEtM1kRERFaO\nNWsiIiIrwJo1ERHRU4zJmmwGa4ykJrYn0hKTNRERkZVjzZqIiMgKsGZNRET0FGOyJpvBGiOpie2J\ntMRkTUREZOWeyWSt1+tRu3ZtBAUFISgoCO+///4TzS8yMhI9e/ZUKbrHs2DBAsydO/expv3qq68Q\nEBCAgIAANGzYEEOHDsXdu3cLnSYyMhKnT582GS7ubfA4pk6dioCAANSvXx9jx47F1q1bC/28iKBt\n27bw8vIy+fv06dMRGBiI2rVrIywsDOnp6Y8cy6RJk1C7dm0EBwc/8rRA3n3yJI4dO4Y1a9aY/M3O\nzg6pqamqzD8/YWFhmD9/PoCitecNGzbgr7/+slg8TyokJKRIn9Pr9YiOjrZsMAD+/vtv9O/f3+LL\noeJRorgDsASdToe1a9eiTp06jzV9ZmYm7Oz+9z1Gp9OpFdpjGzZs2GNNN2nSJOzduxc7d+5UEtC6\ndetw+/ZtuLq6FjhdZGQkvLy8UKNGDQDWsQ2y5d4/hWnatCnGjRuHUqVK4fjx4wgODkZCQgJKliyZ\n7+fnzZsHvV6P48ePK3/bunUrVq5ciUOHDqF06dIYOnQo5syZg/Hjxz9S3F9++SUuXboEDw+PR5ou\nW+59UlT5ba+jR4/il19+yfMFzJI3dep0OqUdFaU9r1u3Ds899xyee+45i8WkBqPRCHt7+wLHa3Wz\nbKNGjbB8+XKLL4eKxzPZswbyP+ls2bIFDRs2RP369dG2bVucPXsWQFbtqV69ehgyZAiCgoKwZcuW\nQuc1c+ZMBAYGIjAwEEOGDEFKSgoAIDk5GYMHD1bGzZo1S5kmJCQE7733Hpo2bYoaNWrgo48+UsZ9\n8sknypWAhg0b5tvrDQ8Px7hx4wBknbTbt2+PPn36ICAgAC1atEBiYmKeaZKTk/Hll1/ihx9+MOkp\nvvLKK6hSpQq6dOmC//73v8rff/75Z3To0AGRkZH4+++/MXLkSAQFBWH79u0AgHv37uW7TKPRiLFj\nxyrrPW7cOGRmZgLI6k29/fbbaNOmDWrWrIlBgwbliTN7Hh07dsRzzz2HgIAADBkyBBkZGcr6tm3b\nFt27d0dgYCD+/fdfHDx4EK1bt0bjxo3RuHFjbN68Od/5tm/fHqVKlQIA3Lp1CyKCW7du5fvZ06dP\nY9WqVZgwYYLJPj9+/DhatmyJ0qVLAwA6duyIFStWAACWL1+OZs2awWAwIDMzE23btsXChQvzzLtl\ny5ZIS0tD69at8cEHHyAxMVGJPyAgwCTxb9iwAfXq1UNQUBACAwOxe/duLF682GSf7NixA0BWW2za\ntCkaNWqErl27KvskPDwcPXv2RIcOHVC3bl2TNnXr1i1MmTIF27ZtQ1BQEEaPHq2Mi4iIQJMmTVCt\nWjX8/PPPyt8L2t7x8fHw9PTEpEmT0LBhQ9SqVQv79u3Ld/vmlLM9//nnn2jUqBGCgoIQEBCAlStX\nYuvWrdi4cSNmzJiBoKCgfJPQlStX0KNHD9SvXx/169fHjBkzAACJiYl45ZVXUL9+fdSrVw/Lli1T\nptHr9Zg8eTKaN28OPz8/rFixAl988QWaNGmCGjVqYO/evSbrNXbsWGU+f/zxh8m4Pn36oFGjRli0\naBGuXbuGnj17omnTpqhXrx6mT59uEuvq1avRvHlzVKlSRbm6AACxsbHo3LkzmjRpggYNGiAyMlIZ\nZ2dnh+nTp+fZH6mpqejZsyfq1q2LBg0aoHfv3gCyzmM5v9gsXboU9erVQ/369dG9e3fcuHEDQOHn\nj/z2BVkJsVJPEpq/v7/UqlVLGjRoIA0aNJCtW7dKYmKieHl5yalTp0REZNGiRdK0aVMREdm5c6fY\n29vLgQMH8p3f4sWL5dVXXxURkc2bN0tAQIDcv39fREQGDhwo48ePFxGRDz74QMLCwkRE5N69e1K3\nbl359ddfRUQkODhYOnToIEajUZKTkyUwMFA2bdokt27dEjc3N0lLSxMRkeTkZDEYDHliCA8Pl7Fj\nxyrxuLu7y+XLl0VE5M0335SPPvoozzQHDx4UNze3ArfTli1bJDQ0VBlu3bq1REVFiYhISEiI/PLL\nLybboKBlfvPNN9K2bVvJyMiQ9PR0adOmjXz77bciIjJo0CBp2bKlPHz4UNLT06Vu3bry+++/5xvP\nrVu3REQkMzNTBg4cKN99952ybGdnZzl37pyIiNy5c0eCgoLk2rVrIiJy9epVqVSpkiQlJRW4riIi\n48ePl0aNGuU7zmg0SnBwsBw7dkzOnz8vnp6eyrgdO3ZIzZo15ebNm5KRkSG9e/eWsmXLKuNff/11\nef/99+WTTz6R3r17F7h8nU4nKSkpIiKSlpYmycnJIiKSnp4urVu3li1btoiISP369ZW2mJmZKffu\n3RORvPtk2bJlMnToUMnMzBSRrP3Qr18/ERGZMmWK+Pn5Kds0t8jISKVN54xv/vz5IiKyb98+qVix\noogUvL3v3r0r58+fF51Op8S1YsUKeeGFF/JdZlhYmDL/8PBwGTdunIiIdO3aVX766Sflc9n7Mefn\n8xMSEiKzZ89Whm/evCkiIr169ZKPP/5YRESuXbsmvr6+cvLkSRER0ev18sEHH4iIyF9//SWlS5eW\nb775RkREVq9eLS1atBARUdZr2bJlIiKya9cuqVSpkqSnpyvjpkyZoiy7bdu2smfPHhERefjwobRo\n0UJp53q9XlnX+Ph4cXZ2lpSUFMnIyJCGDRtKTEyMiGSdM2rWrCmxsbGF7o+ff/5ZOnTokGd77dy5\nUxo3biwiIv/++6/4+vpKQkKCiIhMnjxZaZuFHcsvv/xyvvuCtFFY3rOZy+AbN25E/fr1UatWLQBZ\nPb7hw4crveIaNWqgadOmZue9bds29O3bF87OzgCAoUOHYtSoUQCA7du3IyIiAgDg4uKCvn37Ytu2\n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\nRkSqmRA+AQlJCcUdBlmAj5sPZoTzUVtLKizv2cyvbhGR5SUkJUDfTV/cYZAFxK+PL+4QbBpfN0o2\ngzVGUlP8P/HFHQLZECZrIiIiK8dkTTYj+xlHIjXoG+iLOwSyIUzWREREVo7JmmwGa9akJtasSUtM\n1kRERFaOyZpsBmvWpCbWrElLTNZERERWjsmabAZr1qQm1qxJS0zWREREVo7JmmwGa9akJtasSUtM\n1kRERFaOyZpsBmvWpCbWrElLTNZERERWjsmabAZr1qQm1qxJS0zWREREVo7JmmwGa9akJtasSUtM\n1kRERFaOyZpsBmvWpCbWrElLTNZERERWjsmabAZr1qQm1qxJS0zWREREVo7JmmwGa9akJtasSUtM\n1kRERFaOyZpsBmvWpCbWrElLTNZERERWjsmabAZr1qQm1qxJS0zWREREVo7JmmwGa9akJtasSUtM\n1kRERFaOyZpsBmvWpCbWrElLTNZERERWjsmabAZr1qQm1qxJS0zWREREVo7JmmwGa9akJtasSUtM\n1kRERFaOyZpsBmvWpCbWrElLTNZERERWjsmabAZr1qQm1qxJS0zWREREVo7JmmwGa9akJtasSUtM\n1kRERFaOyZpsBmvWpCbWrElLTNZERERWjsmabAZr1qQm1qxJS0zWREREVo7JmmwGa9akJtasSUsl\nzH0gNjYWs2fPRnx8PAwGAwBAp9Nhx44dFg+OiIiIipCse/bsibfffhtvvPEG7O3tAWQla6Knza5d\nu9i7JtXE/xPP3jVpxmyydnBwwNtvv61FLERERJQPszXrl156CfPnz8e1a9dw+/Zt5R/R04a9alIT\ne9WkJbM968jISOh0OsyePdvk7+fPn7dYUERERPQ/ZpN1fHy8BmEQWR5r1qQm1qxJSwUm6+3bt6NN\nmzZYu3ZtvjeUde/e3aKBERERUZYCk/WePXvQpk0bbNy4kcmangnsVZOa2KsmLRWYrD/55BMAWTVr\nIiIiKj5ma9YAsGnTJkRHRyMtLU3528cff2yxoIgsgTVrUhNr1qQls49uDRs2DKtXr0ZERAREBKtX\nr8aFCxe0iI2IiIhQhGT9559/YunSpShXrhymTJmCAwcOIDY2VovYiFTFXjWpib1q0pLZZF26dGkA\nQJkyZXDlyhWUKFECCQkJFg+MiIiIsphN1l26dMGdO3cwbtw4NGrUCHq9Hn379i3yApKSkvDqq6+i\n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\nYiLKly8PAChfvjwSExO1CoOIiOipU0KLhSQnJ6NHjx746quv4OLiYjJOp9NBp9PlO11YWBj0ej0A\nwM6JhrcAABkuSURBVM3NDQ0aNEBISAgAYNeuXQDA4ScYTricAD30AP7XS8iuwz2rw9msJR5LDSdc\nTsCuXbs0b1/Zinv92Z7UH064nKCsrzWcv56F4ez/x8fHwxydiIjZTz2BjIwMdOnSBZ06dcLo0aMB\nALVq1cKuXbvg4+ODa9euITQ0FDExMaaB6XSwcGg2L2x0GPTd9MUdBllA/Pp4RM6N1Hy5bFPPruJq\nU7aksLxn0cvgIoLXX38dderUURI1AHTt2hVLliwBACxZsgTdunWzZBhEAFhjJHWxPZGWLHoZfN++\nfVi+fDnq1auHoKAgAMD06dMxYcIE9OrVC4sWLYJer8fq1astGQYREdFTzaLJukWLFsjMzMx33LZt\n2yy5aKI8+FwsqYntibTEN5gRERFZOSZrshmsMZKa2J5IS0zWREREVo7JmmwGa4ykJrYn0hKTNRER\nkZVjsiabwRojqYntibTEZE1ERGTlmKzJZrDGSGpieyItMVkTERFZOSZrshmsMZKa2J5IS0zWRERE\nVo7JmmwGa4ykJrYn0hKTNRERkZVjsiabwRojqYntibTEZE1ERGTlmKzJZrDGSGpieyItMVkTERFZ\nOSZrshmsMZKa2J5IS0zWREREVo7JmmwGa4ykJrYn0hKTNRERkZVjsiabwRojqYntibTEZE1ERGTl\nmKzJZrDGSGpieyItMVkTERFZOSZrshmsMZKa2J5IS0zWREREVo7JmmwGa4ykJrYn0hKTNRERkZVj\nsiabwRojqYntibTEZE1ERGTlmKzJZrDGSGpieyItMVkTERFZOSZrshmsMZKa2J5IS0zWREREVo7J\nmmwGa4ykJrYn0hKTNRERkZVjsiabwRojqYntibTEZE1ERGTlmKzJZrDGSGpieyItMVkTERFZOSZr\nshmsMZKa2J5IS0zWREREVo7JmmwGa4ykJrYn0hKTNRERkZVjsiabwRojqYntibTEZE1ERGTlmKzJ\nZrDGSGpieyItMVkTERFZOSZrshmsMZKa2J5IS0zWREREVo7JmmwGa4ykJrYn0hKTNRERkZVjsiab\nwRojqYntibTEZE1ERGTlmKzJZrDGSGpieyItMVkTERFZOSZrshmsMZKa2J5IS0zWREREVo7JmmwG\n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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 88 } ], "metadata": {} diff --git a/benchmarks/cython_least_squares.ipynb b/benchmarks/cython_least_squares.ipynb index 8c47d64..fafb461 100644 --- a/benchmarks/cython_least_squares.ipynb +++ b/benchmarks/cython_least_squares.ipynb @@ -1,7 +1,7 @@ { "metadata": { "name": "", - "signature": "sha256:3b47add80317bb8ad369eacd5528c941bb1a2cbd92ae5b33aae66d56ae35c741" + "signature": "sha256:caecd42da39e4b55b4dc50c985b30a04ee3eac4a88d143732c4441ecc28fc1e0" }, "nbformat": 3, "nbformat_minor": 0, @@ -72,7 +72,8 @@ "- [Performance growth rates for different sample sizes](#sample_sizes)\n", "- [Bonus: How to use Cython without the IPython magic](#cython_bonus)\n", "- [Appendix I: Cython vs. Numba](#numba)\n", - "- [Appendix II: Cython with and without type declarations](#type_declarations)" + "- [Appendix II: Cython with and without type declarations](#type_declarations)\n", + "- [Appendix III: Cython performance after replacing list comprehensions by explicit for loops](#explicit_loops)" ] }, { @@ -1400,7 +1401,14 @@ "source": [ "Like we did with Cython before, we will use the minimalist approach to Numba and see how they compare against each other. \n", "\n", - "Numba is using the [LLVM compiler infrastructure](http://llvm.org) for compiling Python code to machine code. Its strength is to work with NumPy arrays to speed-up code. If you want to read more about Numba, see the original [website and documentation](http://numba.pydata.org/numba-doc/0.13/index.html)" + "Numba is using the [LLVM compiler infrastructure](http://llvm.org) for compiling Python code to machine code. Its strength is to work with NumPy arrays to speed-up code. If you want to read more about Numba, see the original [website and documentation](http://numba.pydata.org/numba-doc/0.13/index.html)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is our \"classic\" approach in Python, where I removed the list comprehensions, since they caused errors in the Numba compilation." ] }, { @@ -1411,8 +1419,12 @@ " \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n", " x_avg = sum(x)/len(x)\n", " y_avg = sum(y)/len(y)\n", - " var_x = sum([(x_i - x_avg)**2 for x_i in x])\n", - " cov_xy = sum([(x_i - x_avg)*(y_i - y_avg) for x_i,y_i in zip(x,y)])\n", + " var_x = 0\n", + " for x_i in x:\n", + " var_x += (x_i - x_avg)**2\n", + " cov_xy = 0\n", + " for x_i, y_i in zip(x,y):\n", + " cov_xy += (x_i - x_avg)*(y_i - y_avg)\n", " slope = cov_xy / var_x\n", " y_interc = y_avg - slope*x_avg\n", " return (slope, y_interc)" @@ -1420,7 +1432,14 @@ "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 1 + "prompt_number": 22 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Cython-compiled version of it:" + ] }, { "cell_type": "code", @@ -1430,8 +1449,7 @@ ], "language": "python", "metadata": {}, - "outputs": [], - "prompt_number": 2 + "outputs": [] }, { "cell_type": "code", @@ -1443,8 +1461,12 @@ " \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n", " x_avg = sum(x)/len(x)\n", " y_avg = sum(y)/len(y)\n", - " var_x = sum([(x_i - x_avg)**2 for x_i in x])\n", - " cov_xy = sum([(x_i - x_avg)*(y_i - y_avg) for x_i,y_i in zip(x,y)])\n", + " var_x = 0\n", + " for x_i in x:\n", + " var_x += (x_i - x_avg)**2\n", + " cov_xy = 0\n", + " for x_i, y_i in zip(x,y):\n", + " cov_xy += (x_i - x_avg)*(y_i - y_avg)\n", " slope = cov_xy / var_x\n", " y_interc = y_avg - slope*x_avg\n", " return (slope, y_interc)" @@ -1452,7 +1474,14 @@ "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 3 + "prompt_number": 26 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And now the Numba-compiled version:" + ] }, { "cell_type": "code", @@ -1465,37 +1494,95 @@ " \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n", " x_avg = sum(x)/len(x)\n", " y_avg = sum(y)/len(y)\n", - " var_x = sum([(x_i - x_avg)**2 for x_i in x])\n", - " cov_xy = sum([(x_i - x_avg)*(y_i - y_avg) for x_i,y_i in zip(x,y)])\n", + " var_x = 0\n", + " for x_i in x:\n", + " var_x += (x_i - x_avg)**2\n", + " cov_xy = 0\n", + " for x_i, y_i in zip(x,y):\n", + " cov_xy += (x_i - x_avg)*(y_i - y_avg)\n", + " \n", " slope = cov_xy / var_x\n", " y_interc = y_avg - slope*x_avg\n", " return (slope, y_interc)" ], "language": "python", "metadata": {}, - "outputs": [ - { - "ename": "ImportError", - "evalue": "No module named 'llvm'", - "output_type": "pyerr", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mnumba\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mjit\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mjit\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mnmb_lstsqr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m\"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numba/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \"\"\"\n\u001b[1;32m 4\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0m__future__\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mprint_function\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdivision\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mabsolute_import\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtesting\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdecorators\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0m_version\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mget_versions\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;31m# Re-export typeof\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numba/decorators.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mwarnings\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mnumba\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0msigutils\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mnumba\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtargets\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mregistry\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;31m# -----------------------------------------------------------------------------\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numba/targets/registry.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0m__future__\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mprint_function\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdivision\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mabsolute_import\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mnumba\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mutils\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtyping\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mnumba\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtargets\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mcpu\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mnumba\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtargets\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdescriptors\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mTargetDescriptor\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mnumba\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mdispatcher\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/numba/targets/cpu.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0msys\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mllvm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcore\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mlc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mllvm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpasses\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mlp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mllvm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mee\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mle\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mImportError\u001b[0m: No module named 'llvm'" - ] - } - ], - "prompt_number": 4 + "outputs": [], + "prompt_number": 27 }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# ... this section is still in progress" + "
\n", + "
\n", + "Now, let us see how the different approaches compare against each other for different sample sizes." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import timeit\n", + "import random\n", + "random.seed(12345)\n", + "\n", + "funcs = ['lstsqr', 'cy_lstsqr', 'nmb_lstsqr'] \n", + "orders_n = [10**n for n in range(1, 7)]\n", + "times_n = {f:[] for f in funcs}\n", + "\n", + "for n in orders_n:\n", + " x = [x_i*random.randrange(8,12)/10 for x_i in range(n)]\n", + " y = [y_i*random.randrange(10,14)/10 for y_i in range(n)]\n", + " for f in funcs:\n", + " times_n[f].append(timeit.Timer('%s(x,y)' %f, \n", + " 'from __main__ import %s, x, y' %f).timeit(1000))" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 28 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#%pylab inline\n", + "#import matplotlib.pyplot as plt\n", + "\n", + "plt.figure(figsize=(10,8))\n", + "\n", + "for f in times_n.keys():\n", + " plt.plot(orders_n, times_n[f], alpha=0.5, label=f, marker='o', lw=2)\n", + "\n", + "plt.xlabel('sample size n')\n", + "plt.ylabel('time in ms')\n", + "plt.xlim([0,max(orders_n) + max(orders_n) * 0.1])\n", + "plt.legend(loc=2)\n", + "plt.grid()\n", + "\n", + "plt.title('Performance of a simple least square fit implementation')\n", + "plt.show()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "iVBORw0KGgoAAAANSUhEUgAAAmEAAAH4CAYAAAACdDpdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4k2XW+PFv0n1vKV2A0gUKhULZBRSQQhFwYRlBliKL\nivO6jCvzc3RUFp0RxhnfcfB1m2GpClhABWRHliqiUtmkUKC00AJtKS2lQOmSNrl/fzxDpFCgSNts\n53Ndva4+SZ7kJCdPcnLfd050SimFEEIIIYRoVHpLByCEEEII4YikCBNCCCGEsAApwoQQQgghLECK\nMCGEEEIIC5AiTAghhBDCAqQIE0IIIYSwACnChM0pKCjg7rvvxtfXl//3//6fpcOxuPLycoYNG4a/\nvz9jx45tsNu57777+OyzzxrkuvV6PceOHbvl/ZKSkujXr18DRGT/duzYQZs2bfD19WXVqlXcd999\nfPrpp3Xe3xqfD9Zu9uzZPP7445YOQ1gRZ0sHIBxDZGQkZ86cwcnJCS8vL+69917+7//+Dy8vr1u+\nrn//+98EBwdz4cKFBojU9nzxxRecOXOG4uJi9PqG+1y1bt26BrtuaxYfH8/EiRN57LHHLB1KvZo+\nfTrPPvsszzzzDAAjRowwn5eUlMT8+fPZvn37dfd3tOfDzJkzycrKqnPhmZKSwsSJEzl58qT5tFde\neaWhwhM2SkbCRKPQ6XSsWbOGixcvsmfPHnbt2sVf/vKXW7oOpRQmk4mcnBzat2//m+Korq7+TftZ\ns5ycHNq2bdugBZgj0+l0lg7hpn7L8/rEiRPExsY2QDRCiDpTQjSCyMhItWXLFvP2H//4R/XAAw8o\npZT68ccf1Z133qn8/f1V586dVUpKivly/fv3V6+++qrq06eP8vDwUA8//LBycXFRrq6uytvbW23Z\nskVVVlaq5557TjVv3lw1b95cPf/886qyslIppdS2bdtUixYt1N/+9jcVGhqqJk6cqGbOnKlGjx6t\nHn74YeXj46Pi4uJURkaGeuutt1RwcLAKDw9XmzZtMsewYMEC1b59e+Xj46NatWqlPv74Y/N5l6//\nnXfeUcHBwapZs2Zq4cKF5vPLysrUiy++qCIiIpSfn5/q27evKi8vv+n9vlp6errq37+/8vf3Vx06\ndFBff/21Ukqp6dOnK1dXV+Xi4qK8vb3VggULrtl3586dqnfv3srf3181a9ZM/eEPf1AGg6HW2ykv\nL1cTJkxQgYGByt/fX91xxx3qzJkz5lzMmzdPKaXUwoUL1V133aVeeOEF5e/vr1q3bq127NihFixY\noFq2bKmCg4PVJ598Yr7eyZMnq//5n/9R99xzj/Lx8VH9+/dXOTk55vN1Op3KyspSSilVUVGhpk2b\npsLDw1VISIh64oknzI/Z1RYuXKj69u1r3j506JAaNGiQatKkiYqJiVHLli0zn7dmzRrVpUsX5evr\nq1q2bKlmzpx5w/tdUFCg/vznPysnJyfl7u6uvL291TPPPFOnx6ygoEAppdSxY8fU3XffrXx8fNQ9\n99yjnn76afXwww8rpbTnTlhYWI3rioiIMB8nN8ubTqdT77//voqOjlatWrVSSim1evVq1blzZ+Xv\n76/uuusutX///loft1atWim9Xq88PDyUj4+PqqysNOf30KFDys3NTTk5OSlvb28VEBBQ63VYw/Ph\n8vH39ttvq6CgINWsWTO1YsUKtXbtWtWmTRvVpEkTNXv2bPP1mkwmNXv2bNW6dWsVGBioxowZo4qL\ni5VSSh0/flzpdDr1ySefqPDwcNW0aVP117/+VSml1Pr162scZ126dFFKXf+1obS0VLm7uyu9Xq+8\nvb2Vj4+PysvLUzNmzDDnXymlVq1apWJjY5W/v7+Kj49Xhw4dqvFc+Mc//qE6deqk/Pz81NixY1VF\nRUWtuRC2S4ow0SgiIyPV5s2blVJKnThxQnXo0EFNnz5dnTp1SgUGBqr169crpZT65ptvVGBgoCoq\nKlJKaS/0ERERKj09XRmNRlVVVaWmTJmiXn/9dfN1v/766+rOO+9UhYWFqrCwUN11113m87dt26ac\nnZ3Vyy+/rAwGgyovL1czZsxQ7u7uatOmTaq6ulpNmjRJRUREqLfeektVV1er//znPyoqKsp8/WvX\nrlXHjh1TSin17bffKk9PT7Vnz54a1z9jxgxVXV2t1q1bpzw9PVVJSYlSSqmnnnpKDRgwQOXl5Smj\n0ah+/PFHVVlZed37XVhYeM1jZzAYVOvWrdXs2bNVVVWV2rp1q/Lx8VFHjhxRSik1c+ZMNXHixOs+\n9rt371Y7d+5URqNRZWdnq/bt26t333231st+9NFHatiwYaq8vFyZTCa1Z88edeHCBaWUUvHx8Wr+\n/PlKKe1N19nZWSUlJSmTyaRee+011aJFC3OhsGnTJuXj46MuXbqklNLedH18fNT27dvNRfOVxdOV\n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\n888cPnwY0B6HgIAAXF1dSU1NZcmSJeY3thvd75CQELKysq57u9fbNzw8nB49ejBjxgyqqqr4/vvv\nWbNmjXm/tm3bUlFRwbp166iqquIvf/kLlZWV5vNvJW8Ajz/+OB999BGpqakopbh06RJr16694UjO\n9YSEhHDq1Cmqqqpued+6aujnQ22eeOIJ/vznP3PixAlAG2n7+uuv67RvaGgo2dnZ5tePm702hISE\ncPbs2esWjA899BBr165l69atVFVV8c477+Du7s5dd91V6+Vv5XVL2A4pwoRFhYWFsWrVKt566y2C\ng4MJDw/nnXfeqfGCU9tI1pWnvfbaa/To0YNOnTrRqVMnevTowWuvvVbn/a93GQAfHx/mzp3LmDFj\naNKkCZ9//nmNfkq17Xulf/zjH8TFxXHHHXcQGBjIK6+8gslkuu79rm2EysXFhdWrV7N+/XqCgoL4\nwx/+wGeffUbbtm2ve3+ujmHJkiX4+vry+9//nnHjxl338qdPn+ahhx7Cz8+P2NhYc4+sq9XlMbz6\nvMTERGbNmkVgYCB79+5l0aJFte77t7/9jejoaHr37o2fnx/33HMPGRkZ173eK3O1adMmkpOTadGi\nBc2aNeOVV17BYDAA8MEHHzB9+nR8fX158803a4wQ3eh+P/fcc3zxxRc0adKE559//pYesyVLlrBz\n506aNGnCG2+8waRJk8zPbT8/Pz744AOmTp1KWFgY3t7eNaYXb5a3qx/v7t2785///Ic//OEPNGnS\nhDZt2vzmUcyEhAQ6dOhAaGhojan767Hk8+FWbve5555j+PDhDB48GF9fX+68805SU1PrtO9DDz0E\naNOfPXr0uOlrQ7t27Rg/fjytWrWiSZMm5Ofn13icYmJiWLRoEc888wxBQUGsXbuW1atX1zr1fzk2\nGQ2zPzrVwOW10WikR48ehIWFsXr1aoqLixk7diw5OTlERkaybNky/P39Aa2b8IIFC3BycmLu3LkM\nHjy4IUMTQjSSRx55hLCwMN58801Lh2JRs2bNIjMzs8E6zdsKeT4IoWnwkbB//etfxMbGmiv4OXPm\nmD/JJCQkMGfOHADS09NZunQp6enpbNiwgaeeeqpOi3GFENZPplI08jho5HEQQtOgRdipU6dYt24d\nU6dONR90X3/9NZMnTwZg8uTJrFy5EoBVq1Yxfvx4XFxciIyMJDo6usYwsRDCdslUikYeB408DkJo\n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\nSUVORK5CYII=\n", + "text": [ + "" + ] + } + ], + "prompt_number": 32 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Without making any modifications to the original code in order to account for the strengths of Numba (Numpy) and Cython (static type declarations), we see that Cython performs significantly better than Numba." ] }, { @@ -1533,9 +1620,45 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "First, our \"simple\" approach using Cython from the previous section:" + "Here is our \"classic\" approach in Python:" ] }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def lstsqr(x, y):\n", + " \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n", + " x_avg = sum(x)/len(x)\n", + " y_avg = sum(y)/len(y)\n", + " var_x = sum([(x_i - x_avg)**2 for x_i in x])\n", + " cov_xy = sum([(x_i - x_avg)*(y_i - y_avg) for x_i,y_i in zip(x,y)])\n", + " slope = cov_xy / var_x\n", + " y_interc = y_avg - slope*x_avg\n", + " return (slope, y_interc)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 44 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Cython-compiled version of it:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%load_ext cythonmagic" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, { "cell_type": "code", "collapsed": false, @@ -1554,7 +1677,7 @@ "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 54 + "prompt_number": 45 }, { "cell_type": "markdown", @@ -1737,6 +1860,339 @@ "source": [ "This is a pretty significant performance gain. The \"Cython + type declarations\" approach sped up our initial Python code 25 times." ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Appendix III: Cython performance after replacing list comprehensions by explicit for loops" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[[back to top](#sections)]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "List, set and dictionary comprehensions in Python do not only look prettier and are easier to read (at least most of the time) than nested loop structures, but they also come with some small performance benefits. \n", + "Does this also apply in Cython? Let's check it out." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "This is the code for our \"classic\" least squares approach that we have been using in the previous sections:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def lstsqr_comprehensions(x, y):\n", + " \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n", + " x_avg = sum(x)/len(x)\n", + " y_avg = sum(y)/len(y)\n", + " var_x = sum([(x_i - x_avg)**2 for x_i in x])\n", + " cov_xy = sum([(x_i - x_avg)*(y_i - y_avg) for x_i,y_i in zip(x,y)])\n", + " slope = cov_xy / var_x\n", + " y_interc = y_avg - slope*x_avg\n", + " return (slope, y_interc)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 46 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "And here is a version where I replaced the list comprehensions by for-loops:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "def lstsqr_loops(x, y):\n", + " \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n", + " x_avg = sum(x)/len(x)\n", + " y_avg = sum(y)/len(y)\n", + " var_x = 0\n", + " for x_i in x:\n", + " var_x += (x_i - x_avg)**2\n", + " cov_xy = 0\n", + " for x_i, y_i in zip(x,y):\n", + " cov_xy += (x_i - x_avg)*(y_i - y_avg)\n", + " slope = cov_xy / var_x\n", + " y_interc = y_avg - slope*x_avg\n", + " return (slope, y_interc)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 48 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Finally, the Cython versions of the two functions (with and without using list comprehensions) that we have defined above:" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%load_ext cythonmagic" + ], + "language": "python", + "metadata": {}, + "outputs": [] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%%cython\n", + "\n", + "def cy_lstsqr_comprehensions(x, y):\n", + " \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n", + " cdef double x_avg, y_avg, var_x, cov_xy, slope, y_interc, x_i, y_i\n", + " x_avg = sum(x)/len(x)\n", + " y_avg = sum(y)/len(y)\n", + " var_x = sum([(x_i - x_avg)**2 for x_i in x])\n", + " cov_xy = sum([(x_i - x_avg)*(y_i - y_avg) for x_i,y_i in zip(x,y)])\n", + " slope = cov_xy / var_x\n", + " y_interc = y_avg - slope*x_avg\n", + " return (slope, y_interc)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 49 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "%%cython\n", + "\n", + "def cy_lstsqr_loops(x, y):\n", + " \"\"\" Computes the least-squares solution to a linear matrix equation. \"\"\"\n", + " cdef double x_avg, y_avg, var_x, cov_xy, slope, y_interc, x_i, y_i\n", + " x_avg = sum(x)/len(x)\n", + " y_avg = sum(y)/len(y)\n", + " var_x = 0\n", + " for x_i in x:\n", + " var_x += (x_i - x_avg)**2\n", + " cov_xy = 0\n", + " for x_i, y_i in zip(x,y):\n", + " cov_xy += (x_i - x_avg)*(y_i - y_avg)\n", + " slope = cov_xy / var_x\n", + " y_interc = y_avg - slope*x_avg\n", + " return (slope, y_interc)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 50 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "
\n", + "We will generate some sample data for different sample sizes and take a look at the results for the regular Python functions, and the Cython code separately." + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import timeit\n", + "import random\n", + "random.seed(12345)\n", + "\n", + "funcs = ['lstsqr_comprehensions', 'lstsqr_loops',\n", + " 'cy_lstsqr_comprehensions', 'cy_lstsqr_loops'] \n", + "\n", + "orders_n = [10**n for n in range(1, 6)]\n", + "times_n = {f:[] for f in funcs}\n", + "\n", + "for n in orders_n:\n", + " x = [x_i*random.randrange(8,12)/10 for x_i in range(n)]\n", + " y = [y_i*random.randrange(10,14)/10 for y_i in range(n)]\n", + " for f in funcs:\n", + " times_n[f].append(timeit.Timer('%s(x,y)' %f, \n", + " 'from __main__ import %s, x, y' %f).timeit(1000))" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 52 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "plt.figure(figsize=(8,6))\n", + "plt.plot(orders_n, times_n['lstsqr_comprehensions'], alpha=0.5, \n", + " label='list comprehensions', marker='o', lw=2)\n", + "plt.plot(orders_n, times_n['lstsqr_loops'], alpha=0.5, \n", + " label='for-loops', marker='o', lw=2)\n", + "plt.xlabel('sample size n')\n", + "plt.ylabel('time in ms')\n", + "plt.legend(loc=2)\n", + "plt.grid()\n", + "plt.xlim([0,max(orders_n) + max(orders_n) * 0.1])\n", + "plt.title('Performance comparison list comprehensions and for-loops')\n", + "plt.show()\n", + "\n", + "plt.figure(figsize=(8,6))\n", + "plt.plot(orders_n, times_n['cy_lstsqr_comprehensions'], alpha=0.5, \n", + " label='list comprehensions (Cython', marker='o', lw=2)\n", + "plt.plot(orders_n, times_n['cy_lstsqr_loops'], alpha=0.5, \n", + " label='for-loops (Cython)', marker='o', lw=2)\n", + "plt.xlabel('sample size n')\n", + "plt.ylabel('time in ms')\n", + "plt.legend(loc=2)\n", + "plt.grid()\n", + "plt.xlim([0,max(orders_n) + max(orders_n) * 0.1])\n", + "plt.title('Performance comparison list comprehensions and for-loops in Cython')\n", + "plt.show()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nURKDPTGQxwAAAABJRU5ErkJggg==\n", + "text": [ + "" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "iVBORw0KGgoAAAANSUhEUgAAAeoAAAGJCAYAAABFDXDOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8TXf++PFXQoJE9kgiO0ntgtZSFLG2lNYoKtagqr/B\nTKtT7bSKKqodVBedfnVUSmyli30pGqNUaRGqxJpYEksESSSyfn5/nMltQja5N7n3JO/n4+Eh5957\nznmf9z03n5zz/tzPx0oppRBCCCGERbI2dwBCCCGEKJo01EIIIYQFk4ZaCCGEsGDSUAshhBAWTBpq\nIYQQwoJJQy2EEEJYMGmoi3Ht2jU6d+6Mo6Mjr732mrnDEUXYu3cvjRo1qtB9hoaGsmTJEgBWrFjB\nk08+WaH7tyT5c1FR+vTpw/Llyyt0n6YUGBjIrl27Cn0uPT2dfv364ezszPPPP2/0vmbMmMGIESOM\n3o6pWNJ7Fx4ezttvv23uMEpU6RrqwMBA7OzscHBwwMvLi9GjR3P37t0ybWvx4sV4eHiQnJzMv/71\nLxNHKkylU6dOnDp1qkL3aWVlhZWVFQDDhg1j+/btJa6jl18KDyt/LirKli1bLKrxeVjF5WzdunVc\nv36dpKQk1qxZY5J9WRJj37uVK1fSunVrHBwc8Pb2pk+fPuzbt6/E9SIiIujUqVOBx8xx7pZFpWuo\nrays2LRpEykpKRw+fJhff/2VWbNmPdQ2lFLk5uYSFxdH48aNyxRHdnZ2mdYTD0fyXL4kvxUvLi6O\nBg0aYG398L+eC3u/KtOYVgsWLOCVV15h6tSpXL9+nUuXLjFhwgQ2bNhg7tDKVaVrqPPz9vbmqaee\n4vfffwfgwIEDdOjQARcXF1q2bMmePXsMrw0NDWXq1Kk88cQT2NvbM2rUKJYtW8YHH3yAg4MDu3fv\nJjMzk5dffhkfHx98fHx45ZVXyMzMBCAqKgpfX18++OAD6taty5gxY3jnnXcYNGgQI0aMwNHRkZCQ\nEM6cOcN7772Hp6cnAQEB/PDDD4YYli5dSpMmTXB0dCQoKIjFixcbnsvb/oIFC/D09MTb25uIiAjD\n8+np6bz66qsEBgbi7OxMp06duHfvXonHfb9Lly4xYMAAPDw8cHd3Z9KkSQDk5uYya9YsAgMD8fT0\nZNSoUSQnJwMQGxuLtbU1ERER+Pv74+bmxueff86hQ4cICQnBxcXFsB3Q/rLt2LEjkyZNwtnZmcaN\nG7N79+6HykNenseOHUtUVBR+fn6G17z//vv4+vri6OhIo0aNDNvOyMgo8f0rKr/Fyf+XulKKV155\nBU9PT5ycnAgJCeHEiRMsXryYlStXGs6nZ599ttBtnThxgp49e+Lm5oaXlxfvvfdeqWP/17/+hYeH\nB97e3nz//fds2bKFBg0a4Obmxty5cw37mDFjBgMHDmTIkCE4Ojry2GOPcezYMcPzgYGBfPDBB4SE\nhODg4EBubm6J51BsbCxPPPEEjo6OPPnkk9y8edPwXEmfu2nTphW67r179xg+fDju7u64uLjQtm1b\nbty4YVgv73a7UqrEc3PZsmUEBARQp04d5syZY9j/wYMHad26NU5OTnh5efHqq68W+r7cvn2bvn37\n4uHhgaurK/369ePKlSulOg6A5cuXExAQgLu7e4H932/69Om8++67rFmzBgcHB5YuXVqq4/vyyy8J\nCAigR48eRW47z4YNG2jatCkuLi507dq1wN2okydPEhoaiouLC82aNWPjxo2G58LDw3nppZfo1asX\njo6OhIaGcvHiRcPzhZ33hcn/3kVERPDEE0/w2muv4erqSv369dm2bVuh6925c4fp06fz2Wef0b9/\nf2rVqkW1atV4+umnef/997l69Sr29vYkJSUZ1jl8+DAeHh78/vvvvPTSS/z88884ODjg6upqeE1S\nUhJ9+/bF0dGRxx9/nPPnzxue279/P23atMHZ2Zm2bdvy888/FziO4t5zk1KVTGBgoNq5c6dSSqmL\nFy+qpk2bqmnTpqnLly8rNzc3tXXrVqWUUj/88INyc3NTiYmJSimlunTpogICAtQff/yhcnJyVFZW\nlgoPD1dvv/22Ydtvv/22at++vbpx44a6ceOG6tChg+H5H3/8UVWvXl298cYbKjMzU6Wnp6vp06er\nmjVrqh07dqjs7Gw1cuRIFRAQoObMmaOys7PVF198oerVq2fY/ubNm9X58+eVUkrt2bNH2dnZqcOH\nDxfY/vTp01V2drbasmWLsrOzU7dv31ZKKfXXv/5Vde3aVcXHx6ucnBz1888/q4yMjCKP+8aNGw/k\nLjs7W4WEhKjJkyertLQ0de/ePbVv3z6llFJLlixRwcHB6sKFCyo1NVUNGDBAjRgxQiml1IULF5SV\nlZX6f//v/6mMjAy1Y8cOZWtrq/r3769u3Lihrly5ojw8PNSePXuUUkotXbpUVa9eXS1cuFBlZ2er\nNWvWKCcnJ5WUlFTqPOTP848//qh8fX2VUkqdOnVK+fn5qYSEBKWUUnFxcercuXOlfv+Kyu/9QkND\n1ZIlSwzH88QTTyillNq2bZt67LHH1J07dwzx5MVy//l0v+TkZOXl5aUWLFigMjIyVEpKivrll19K\nHfu7775rOK/c3NzU0KFDVWpqqjpx4oSqVauWio2NVUopNX36dGVjY6O++eYblZ2drebNm6fq1aun\nsrOzlVJKBQQEqFatWqnLly+re/fuleqzExQUpM6cOaPS09NVaGioeuONN5RSqlTrBgcHF7ru559/\nrvr166fS09NVbm6uOnz4sEpOTn4g/6U5N1988UV17949FR0drWrUqKFOnTqllFLq8ccfV5GRkUop\npe7evasOHDhQ6Htz8+ZN9e2336r09HSVkpKiBg0apPr37294vrjjOHHihKpdu7bau3evysjIUJMn\nT1bVq1dXu3btKnRfM2bMMMRf2uMbNWqU4TN7v+nTp6vhw4crpZSKiYlR9vb2aufOnSo7O1t98MEH\nKjg4WGVlZanMzEwVFBSk3nvvPZWVlaV2796tHBwcVExMjFJKqVGjRikHBwfDcfz9738v1Xl/v/s/\nOzY2Nuo///mPys3NVf/+97+Vt7d3oett3bpVVa9eXeXk5BT6vFJK9enTR/373/82LL/88svqb3/7\nm1JKqYiICEO8eUaNGqXc3NzUoUOHVHZ2tho2bJgaMmSIUkp7z52dnVVkZKTKyclRq1atUi4uLobf\nU8W956ZW6RrqgIAAVbt2beXs7KwCAgLUhAkTVHp6upo7d26Bk18ppZ588kn11VdfKaW0k2f69OkF\nng8PD1dTp041LAcFBRl+4Sil1Pbt21VgYKBSSvtlaWtrqzIyMgzPT58+XfXq1cuwvGHDBlW7dm2V\nm5urlNJ+MVtZWRlO7vv1799fffTRR4bt16pVq8BJ6uHhoX755ReVk5OjatWqpY4dO/bANko67vz2\n79+v6tSpU+gHoVu3bgU+ADExMcrGxkbl5OQYflnEx8cbnndzc1Nff/21Yfm5555TCxcuVEppH877\nP4xt27ZVy5cvL1Ue7s9z/ob6zJkzysPDQ+3cuVNlZmYW2E5J719R+S1MUQ31rl27VIMGDdSBAwce\nyOP959P9Vq5cqR599NFCnytN7PefVwcPHjS8/rHHHlPr169XSmnnZfv27Q3P5ebmqrp166qffvpJ\n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\nL1HPoRhem1SIm6wStV6vh91u58d2uz3qL5pUFAqFsHbtWtx///1Ys2YNAPEvyP7+fgBAX18fiouL\nAVwav+7ubhgMBuj1enR3d1/y+IXXdHV1ARB/IY+MjECr1cbls8XDkSNHsHv3blRWVmLTpk04ePAg\n7r//forhBBgMBhgMBixaJN4RcN26dThx4gRKS0sphuP00UcfYdmyZdDpdFCpVLjnnnvw/vvvUwyv\n0VT//9XpdLLKR7JK1AsXLkR7eztsNhuCwSBeeOEFrF69WuppSYYxhq985SuYPXs2tm3bxh9fvXo1\n/vSnPwEQuxIvJPDVq1dj586dCAaDsFqtaG9vx+LFi1FaWor8/HwcO3YMjDH8+c9/xl133XXJ93rp\npZfQ1NQU5085tR5//HHY7XZYrVbs3LkTt9xyC/785z9TDCegtLQU5eXlOHv2LABg//79mDNnDlat\nWkUxHKeZM2fi6NGj8Pl8YIxh//79mD17NsXwGsXj/++tt96Kffv2weVyYXh4GG+//TZWrlwpwaeF\nvLq+GWPszTffZDU1NcxkMrHHH39c6ulI6t1332UKhYLNnz+f1dfXs/r6evbWW28xh8PBmpqamNls\nZitWrIjqRHzssceYyWRitbW1bO/evfzxjz76iNXV1TGTycQeffRR/rjf72fr169n1dXVbMmSJcxq\ntcbzI8ZVS0sL7/qmGE5MW1sbW7hwIZs3bx67++67mcvlohhO0BNPPMFmz57N6urq2AMPPMCCwSDF\ncBw2btzIysrKmFqtZgaDgT3zzDNxi9szzzzDqqurWXV1NWtubo7L570cuuEJIYQQImOyOvVNCCGE\nkGiUqAkhhBAZo0RNCCGEyBglakIIIUTGKFETQgghMkaJmhBCCJExStSEpKjGxkYcP348pu+xZ8+e\nlN+OlpCpppJ6AoQQaUzGPZJXrVrF9/gmhEwNWlETIhNerxd33HEH6uvrMXfuXLz44osAgJ/97GdY\nvHgx5s6di4cffpg/v7GxEd/5znewaNEizJo1Cx9++CHuvvtu1NTU4Cc/+QkAcde1mTNn4r777sPs\n2bOxfv16+Hy+S9573759WLZsGRYsWIB7770XXq/3kuc89dRTmDNnDubPn4/NmzcDAJqbm/Hoo48C\nAOrr69HQ0ICGhgZkZ2fj3XffhdfrxdatW7FkyRJcd9112L179yXft6WlBY2NjVi/fj1mzZqF++67\nL/ZgEpJMJLsnGiEkyksvvcQeeughfjwyMsIYY8zpdPLH7r//frZnzx7GGGONjY3shz/8IWOMsSef\nfJKVlZWx/v5+FggEmMFgYE6nk1mtVqZQKNiRI0cYY4xt3bqV/eIXv+CvP378OBsaGmI33XQTGxsb\nY4wxtmPHDvazn/3skvlNnz6dBYPBqLk1Nzezb3zjG1HP2717N7vppptYKBRi//mf/8n+8pe/MMYY\nGx4eZjU1Nczr9UY9/9ChQ6ygoID19PQwQRDY9ddfz1pbW68lhIQkJVpREyIT8+bNw9tvv40f/vCH\naG1tRX5+PgDg4MGDWLp0KebNm4eDBw/i9OnT/DUXNq2pq6tDXV0dSkpKkJ6ejqqqKr7zT3l5Oa6/\n/noAwH333YfW1lb+esYYjh49itOnT2PZsmVoaGjAs88+y3cT+uz8Nm/ejL/+9a9IS0u77Gdob2/H\n97//fezatQsqlQr79u3Djh070NDQgOXLlyMQCETtSHTB4sWLMX36dCgUCtTX18Nms11bEAlJQlSj\nJkQmzGYzTp48iTfeeAM//vGP0dTUhO9///v4+te/juPHj0Ov1+O//uu/4Pf7+WsyMjIAAEqlkn99\n4TgcDgOI3uedMXbZuvSKFSvw3HPPXXV+b7zxBg4fPow9e/bgsccew6lTp6L2+PZ4PNiwYQP+8Ic/\noKSkhD/+yiuvwGw2X/V7f3ruaWlpfO6EEKpREyIbfX19yMzMxJe+9CX8x3/8B06ePMmTsk6ng8fj\n4XXriejq6sLRo0cBAM899xxuvPFGPqZQKLB06VK89957sFgsAMRaeXt7e9T3YIyhq6sLjY2N2LFj\nB0ZGRuDxeKKes3XrVjz44IO44YYb+GMrV67EU089xY9Pnjw54fkTkupoRU2ITJw6dQrf+973oFQq\noVar8bvf/Q4FBQV46KGHUFdXh9LSUixZsuSyr71aB3dtbS2efvppbN26FXPmzMEjjzwSNV5UVITm\n5mZs2rQJgUAAAPDYY49FrYIjkQjuv/9+jIyMgDGGb33rWygoKODv29XVhZdffhnt7e145plnAAB/\n/OMf8ZOf/ATbtm3DvHnzIAgCqqqqLmkou9zcY+1GJySZ0DaXhCQxm82GVatW4dSpU1JPhRByjejU\nNyFJjlanhCQ2WlETQgghMkYrakIIIUTGKFETQgghMkaJmhBCCJExStSEEEKIjFGiJoQQQmSMEjUh\nhBAiY/8fzj2UNX7XML4AAAAASUVORK5CYII=\n", + "text": [ + "" + ] + } + ], + "prompt_number": 71 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "As we can see in the first plot, the list comprehensions lead to a slightly increased performance in regular Python code. \n", + "But the second plot is quite interesting: List comprehensions in Cython are significantly slower than the regular for-loop structures.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
\n", + "Let us do a quick comparison by how much we were able to improve the performance of the simple least square implementation using Cython so far:\n", + "
" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import random\n", + "random.seed(12345)\n", + "\n", + "x = [x_i*random.randrange(8,12)/10 for x_i in range(500)]\n", + "y = [y_i*random.randrange(8,12)/10 for y_i in range(100,600)]" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 72 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import timeit\n", + "\n", + "funcs = ['lstsqr_comprehensions', 'cy_lstsqr_comprehensions', \n", + " 'cy_lstsqr_loops'] \n", + "labels = ['list comprehensions', 'list comprehensions (Cython)', \n", + " 'for-loops (Cython)']\n", + "\n", + "times = [timeit.Timer('%s(x,y)' %f, \n", + " 'from __main__ import %s, x, y' %f).timeit(1000)\n", + " for f in funcs]\n", + "\n", + "times_rel = [times[0]/times[i+1] for i in range(len(times[1:]))]" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 73 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "#%pylab inline\n", + "#import matplotlib.pyplot as plt\n", + "\n", + "plt.figure(figsize=(8,6))\n", + "x_pos = np.arange(len(funcs[1:]))\n", + "plt.bar(x_pos, times_rel, align='center', alpha=0.5, color=\"green\")\n", + "plt.xticks(x_pos, labels[1:], rotation=90)\n", + "plt.ylabel('relative performance gain')\n", + "plt.title('Performance gain compared to the classic least square implementation')\n", + "ftext = 'For-loops in Cython are {:.2f}x faster then list comprehensions'\\\n", + " .format(times[1]/times[2],1)\n", + "plt.figtext(.15,.8, ftext, fontsize=11, ha='left')\n", + "plt.xlim([-1,len(funcs[1:])])\n", + "plt.ylim([0,max(times_rel)*1.2])\n", + "plt.grid()\n", + "plt.show()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\nxoyR1NRUSUtLk3379olIVkKpXr26nD9/XpKTk6V79+4yYMAAEfnfCeDtt9+Whw8fytatW8XR0VG6\ndesmN27ckCtXroi3t7fs3r1bialEiRIyd+5cMRgMsmrVKnF1dVVOKEXZ/jn379y5c+X555+XK1eu\nSHp6ugwbNkz69u0rIiInT54UZ2dn2bt3rzx8+FDGjBkjJUqUyDdZi0ietpaeni7VqlWT6dOnS0ZG\nhuzYsUNcXFwkNjY23+lzbvtsOp1OXnrpJbl7965cvHhRvLy8ZMuWLSIisn79eqlevbrExMSI0WiU\nTz/9VJo3b57vvOPj48XFxUVWrlwpBoNBbt26Jf/8848Sd/aJqrD2kZycLGXLlpW4uDgREUlISJCT\nJ0+KiEifPn1k2rRpIpLVBrP3ffY6ZCfrgtp4bjmTtdFolIYNG8rUqVMlIyNDzp07J1WrVpXffvtN\nRLK+nB48eFCMRqPEx8dL7dq1Ze7cuSIismXLFmnUqJHy5TAmJkauXbuW7/7KrbBpe/fuLb1795bU\n1FQ5ceKEVKxYUVq2bCki+SfrnPv2zJkzsm3bNklPT5cbN25Iq1atZPTo0cpn/f39JSgoSC5fvixp\naWmPdPyLmHZ2HvX8FRwcLBUrVpSTJ09KSkqK9OjRQ/r375/venXr1k3eeustSU1NlevXr0uTJk2U\nL8fZx2lkZKRkZmbKpEmTpGLFisoXqa1bt4qLi4ukpKSISNaXopdfflnu3Lkj9+/fl5deekk+/PBD\npS0Udt7Mbz+uWbNG2VerVq0SJycnSUhIEBGRyMhI5YtVtpzz2L59u3h6esrRo0fl4cOH8u6770qr\nVq2UzxZ2TD6OpzpZ+/v7i7Ozs7i5uYm/v7+888478uDBA5kxY4Zyks/WoUMH5RtaSEiITJkyxWR8\nzhORiEi1atVMeoe//fab6PV6EclqFI6OjiYnjylTpkj79u2V4aioKHF2dpbMzEwREbl3757odDrl\ngM6tW7du8tVXXynzL126tMlB7O3trZxoSpcuLcePH88zD3PrndPu3bulYsWKJn9r0aJFgSelo0eP\nKt8uRfIm6+rVqyvjUlJSRKfTSWJiYp75/Pnnn+Ll5WWybtlat24t3377rTIcGxsrDg4OYjQalRNA\nzm+uHh4esnr1amW4R48eysl38eLFeb4wNGnSRJYtW5bv+uXe/rn3b+3atU2S79WrV8XBwUEMBoN8\n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\nZ2dnh+nTp+fZH6mpqejZsyfq1q2LBg0aoHfv3gCyzmM5v9gsXboU9erVQ/369dG9e3fcuHEDQOHn\nj/z2BVkJsVJPEpq/v7/UqlVLGjRoIA0aNJCtW7dKYmKieHl5yalTp0REZNGiRdK0aVMREdm5c6fY\n29vLgQMH8p3f4sWL5dVXXxURkc2bN0tAQIDcv39fREQGDhwo48ePFxGRDz74QMLCwkRE5N69e1K3\nbl359ddfRUQkODhYOnToIEajUZKTkyUwMFA2bdokt27dEjc3N0lLSxMRkeTkZDEYDHliCA8Pl7Fj\nxyrxuLu7y+XLl0VE5M0335SPPvoozzQHDx4UNze3ArfTli1bJDQ0VBlu3bq1REVFiYhISEiI/PLL\nLybboKBlfvPNN9K2bVvJyMiQ9PR0adOmjXz77bciIjJo0CBp2bKlPHz4UNLT06Vu3bry+++/5xvP\nrVu3REQkMzNTBg4cKN99952ybGdnZzl37pyIiNy5c0eCgoLk2rVrIiJy9epVqVSpkiQlJRW4riIi\n48ePl0aNGuU7zmg0SnBwsBw7dkzOnz8vnp6eyrgdO3ZIzZo15ebNm5KRkSG9e/eWsmXLKuNff/11\nef/99+WTTz6R3r17F7h8nU4nKSkpIiKSlpYmycnJIiKSnp4urVu3li1btoiISP369ZW2mJmZKffu\n3RORvPtk2bJlMnToUMnMzBSRrP3Qr18/ERGZMmWK+Pn5Kds0t8jISKVN54xv/vz5IiKyb98+qVix\noogUvL3v3r0r58+fF51Op8S1YsUKeeGFF/JdZlhYmDL/8PBwGTdunIiIdO3aVX766Sflc9n7Mefn\n8xMSEiKzZ89Whm/evCkiIr169ZKPP/5YRESuXbsmvr6+cvLkSRER0ev18sEHH4iIyF9//SWlS5eW\nb775RkREVq9eLS1atBARUdZr2bJlIiKya9cuqVSpkqSnpyvjpkyZoiy7bdu2smfPHhERefjwobRo\n0UJp53q9XlnX+Ph4cXZ2lpSUFMnIyJCGDRtKTEyMiGSdM2rWrCmxsbGF7o+ff/5ZOnTokGd77dy5\nUxo3biwiIv/++6/4+vpKQkKCiIhMnjxZaZuFHcsvv/xyvvuCtFFY3rOZy+AbN25E/fr1UatWLQBZ\nPb7hw4crveIaNWqgadOmZue9bds29O3bF87OzgCAoUOHYtSoUQCA7du3IyIiAgDg4uKCvn37Ytu2\nbejYsSN0Oh0GDRoEOzs7ODk5oU+fPtixYwc6deqE6tWrY8CAAWjfvj26dOkCJycns3G88MILqFix\nIgCgWbMyheJmAAAgAElEQVRm+P333x9hC2Vp3749Ro8ejZiYGIgIzp07hy5duijjJdcVhYKWuX37\ndgwePBglSmQ1p8GDB2PdunV46623oNPp0K1bNzg6OgIAGjZsiLNnz6Jt27Ym887MzMSsWbOwZcsW\nGI1G3Llzx2Q7tGjRAlWqVAGQ9e3//Pnz6NSpkzLezs4OZ8+eRcOGDfNd1927d+Onn37Ctm3b8h0/\ne/ZsBAcHo169eoiPjzcZFxoainfeeUfppbdp08Zke8+bNw8NGzaEwWDAkSNH8p1/bgaDAWPHjsX+\n/fshIkhISMCxY8fQoUMHtG7dGqNHj0aPHj3QqVMn1K1bV5ku5z6JiorC33//rayzwWCAm5ubMv7F\nF19EuXLl8l1+7n2brU+fPgCyygdXr15Fenp6gdv7zJkzKFeuHJydndG5c2dluqLeI5IdQ+vWrfHp\np5/i7NmzaNeuHZo0aWI2zuTkZOzfv1+56gNAKS9s374dc+bMAQD4+Pigc+fO2LFjh3I+yO6JBgUF\nIS0tTRlu2LAhzpw5o8zP0dFRqQEHBwejdOnSiI2NhbOzM0qVKoXw8HAAQEpKCnbt2oWbN2+axBcT\nE6O08+zt6u/vD3d3d1y+fBkGgwExMTHKOADIyMjAqVOnULNmTZPpcu6PBg0a4NSpUxgxYgRCQkLw\n4osv5tk+O3fuxIsvvojy5csDyCo71K9fXxlf0LEcGhpa4L6g4vVMJuv8mKu5ZidfAOjevTvOnz8P\nnU6HPXv25JlPzhNI7pNJ7nE5l5vfODs7Oxw4cAD79u3Djh070KhRI2zZsgWBgYGFxpt9aRfIOnEa\nDIY8n6lTpw7S0tJw+vTpfOucOp0OI0aMwPz586HT6ZTkmnN8UZdZ2HrnrA/b29vnG+uKFSuwb98+\n/PHHH3BycsL06dMRFxenjM+5fwCgXr162L17d5755Gf//v0YMGAAoqKiCqz37t27F8ePH8fSpUth\nMBhw584dVK1aFcePH4ezszNGjhyJkSNHAsi6pJkzgV67dg0pKSmws7PD3bt388Sany+//BJJSUk4\ndOgQHB0dMWzYMDx48EAZd/LkSWzfvh09e/bEmDFj8MYbbwDIu08mT56MsLCwPPPX6XRF+tKXW/Y+\nzq7BGgwGiEiB2zs+Pr5I+7cwo0aNQteuXfH777/j3XffRfv27TF16lRlPQpTUDIvrD3mXsecw7lj\nzz1ttpzbNvuegMOHDxdYu8557GQvR0Tg6emJo0ePFrh++e2PKlWqIDo6Gtu2bcOvv/6KiRMn4t9/\n/zWZztx5qqBjubB9QcXrma1Z59a0aVMcO3YMsbGxAIAlS5agYcOG+Z7Qfv75Zxw9ehRHjhzJc+Jt\n27YtVq1aheTkZIgIfvjhB7Rv314Zt2jRIgDA/fv3sWrVKrRr1w5A1sGyfPlyGI1GpKSkYM2aNWjd\nujWSk5Nx/fp1tGrVCuHh4QgICMDJkyfzxFTQSakwzs7OeO+99zB06FClXiUiWL9+Pc6fPw8AGDRo\nENavX4/Vq1crCQEAypYti6SkpCItp23btliyZAkMBgMyMjKwZMkSZb2L6u7du/D09ISTkxPu3r2L\nFStWFHiibt68OU6fPm3ynGtBdw3/9ddf6N27N9auXVvo+mzcuBEXLlzA+fPn8ccff8Dd3R3nzp1T\n9n9CQgIA4M6dO5g5cybGjh0LAEhPT0fv3r0xa9YsTJkyBX369IHRaCzS+laoUAGOjo64cuUKNmzY\noKxvbGws6tati5EjR6J///44fPgwgLz7pGvXrpg/f77yt4cPHyo3xplrL66urmafCMj2KNvbnOy4\ncsYXFxeHKlWqYOjQoRg5cqQy78LaoLOzM5o3b670oAEo9yK0bdsW33//PYCs/fbrr7+idevWjxxr\neno6/vOf/wDI+jKXlpamXJkD/vectYuLC1q2bGlSp7506VK+95HkVKtWLZQpU8akHh8TE4P79+8X\nOt2VK1eg0+nw8ssv48svv8SNGzdw584dk8+EhIRg8+bNSgzff/+9cp4qTEH7goqfzfSsvby8sGzZ\nMrz22mswGAzw9vZWDpKcd6nmJ+f4jh074vjx43j++ecBAM899xwmTZoEIKuXM2LECKVXPHDgQOUA\n0el0qFWrFpo3b47bt2+jd+/e6Ny5My5fvoxXX30VDx48QGZmJho1aoTu3bsXGkPueAuLf9q0aZgz\nZ47ymImIoFWrVggNDQWQddLr1KkT0tLSTO5SHjp0KN5//33MmjULs2fPLnSZQ4cOxZkzZxAUFKRs\nozfffNPks7nXJbeBAwdiw4YNqF27Nry9vREcHKz0NHMv283NDVFRURg3bhxGjx6N9PR0VKtWDVFR\nUXnm/c477+Dhw4cYOnQokpOT4ezsjOXLl6Nu3bpYsGABrl69ik8++cRkmvx6U+3bt0dmZiYyMjLw\n7rvvomvXrgCA8ePHo2HDhujVqxcAYMeOHZg8eTKmTZuWZx1zznPkyJHo2bMnAgMDUalSJZOywIcf\nfojTp0+jRIkScHd3V74A5twnX3zxBfr374+bN28qj4JlZmbinXfeQb169cy26TZt2mD27Nlo0KAB\nQkJCMHfu3AL3k7u7e77be+PGjXnWK7/h/MbljO/rr7/Gzp074ejoiFKlSuHrr78GAAwYMABhYWFY\ns2YN3n///TyPJS1fvhzvvPMOlixZAnt7e/Tr1w/jxo1DRESEctlXRDBz5kzUrl270HjyG/bw8MA/\n//yDzz//HADw008/KaWe3NOtWLEC7733HurVqwcgK4EvXrxYuQydH3t7e2zcuBGjR4/GrFmzYDQa\n4ePjg9WrVxca2/Hjx/Hhhx8CyLoxc+LEifDx8UFMTIzymYCAAMyYMQPt2rWDTqdDtWrVsGDBgjzb\nPvdwQfuCih/fDa6R0NBQjBs3TqntWQuDwYD69etj6dKlaNSoUXGHQ2QV4uPj8dxzzylXpIi0wHeD\nU76ioqJQvXp1dOjQgYmaKBdrercAEXvWZDN27dpV5LdOEZnD9kRqY8+aiIjoKWbRnvX06dOxfPly\n2NnZITAwEIsXL0ZKSgp69+6NCxcuQK/XY/Xq1SbPhiqBsWdNREQ2pFh61vHx8fj+++9x5MgR/Pvv\nvzAajVi5cqVyh2JcXBzatGmjvCKQiIiI8mexZF22bFk4ODggNTUVBoMBqamp8PX1RVRUlPJ+6Oxn\nfIm0wN8fJjWxPZGWLJasy5Urh/fffx9+fn7w9fWFm5sb2rVrh8TEROXZw/Lly5t9cQAREZGts9hL\nUc6ePYu5c+ciPj4erq6u6NmzZ55fzjH34oawsDDo9XoAWS/CyH6BA/C/b7Uc5vCjDGezlng4/HQP\nZ7OWeDj8dA1n/z/37xHkx2I3mK1atQq///47fvjhBwDAsmXLcODAAezYsQM7d+6Ej48Prl27htDQ\nUMTExOQNjDeYERGRDSmWG8xq1aqFAwcO4MGDBxARbNu2DXXq1MFLL72EJUuWAMh6P3e3bt0sFQKR\nidy9IaInwfZEWrLYZfD69etj4MCBaNy4Mezs7NCwYUMMHToU9+/fR69evbBo0SLl0S0iIiIqGN9g\nRkSqmRA+AQlJCcUdBlmAj5sPZoTzUVtLKizv2cyvbhGR5SUkJUDfTV/cYZAFxK+PL+4QbBpfN0o2\ngzVGUlP8P/HFHQLZECZrIiIiK8dkTTYj+xlHIjXoG+iLOwSyIUzWREREVo7JmmwGa9akJtasSUtM\n1kRERFaOyZpsBmvWpCbWrElLTNZERERWjsmabAZr1qQm1qxJS0zWREREVo7JmmwGa9akJtasSUtM\n1kRERFaOyZpsBmvWpCbWrElLTNZERERWjsmabAZr1qQm1qxJS0zWREREVo7JmmwGa9akJtasSUtM\n1kRERFaOyZpsBmvWpCbWrElLTNZERERWjsmabAZr1qQm1qxJS0zWREREVo7JmmwGa9akJtasSUtM\n1kRERFaOyZpsBmvWpCbWrElLTNZERERWjsmabAZr1qQm1qxJS0zWREREVo7JmmwGa9akJtasSUtM\n1kRERFaOyZpsBmvWpCbWrElLTNZERERWjsmabAZr1qQm1qxJS0zWREREVo7JmmwGa9akJtasSUtM\n1kRERFaOyZpsBmvWpCbWrElLTNZERERWjsmabAZr1qQm1qxJS0zWREREVo7JmmwGa9akJtasSUtM\n1kRERFaOyZpsBmvWpCbWrElLTNZERERWjsmabAZr1qQm1qxJS0zWREREVo7JmmwGa9akJtasSUsl\nzH0gNjYWs2fPRnx8PAwGAwBAp9Nhx44dFg+OiIiIipCse/bsibfffhtvvPEG7O3tAWQla6Knza5d\nu9i7JtXE/xPP3jVpxmyydnBwwNtvv61FLERERJQPszXrl156CfPnz8e1a9dw+/Zt5R/R04a9alIT\ne9WkJbM968jISOh0OsyePdvk7+fPn7dYUERERPQ/ZpN1fHy8BmEQWR5r1qQm1qxJSwUm6+3bt6NN\nmzZYu3ZtvjeUde/e3aKBERERUZYCk/WePXvQpk0bbNy4kcmangnsVZOa2KsmLRWYrD/55BMAWTVr\nIiIiKj5ma9YAsGnTJkRHRyMtLU3528cff2yxoIgsgTVrUhNr1qQls49uDRs2DKtXr0ZERAREBKtX\nr8aFCxe0iI2IiIhQhGT9559/YunSpShXrhymTJmCAwcOIDY2VovYiFTFXjWpib1q0pLZZF26dGkA\nQJkyZXDlyhWUKFECCQkJFg+MiIiIsphN1l26dMGdO3cwbtw4NGrUCHq9Hn379i3yApKSkvDqq6+i\n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\nYiLKly8PAChfvjwSExO1CoOIiOipU0KLhSQnJ6NHjx746quv4OLiYjJOp9NBp9PlO11YWBj0ej0A\nwM6JhrcAABkuSURBVM3NDQ0aNEBISAgAYNeuXQDA4ScYTricAD30AP7XS8iuwz2rw9msJR5LDSdc\nTsCuXbs0b1/Zinv92Z7UH064nKCsrzWcv56F4ez/x8fHwxydiIjZTz2BjIwMdOnSBZ06dcLo0aMB\nALVq1cKuXbvg4+ODa9euITQ0FDExMaaB6XSwcGg2L2x0GPTd9MUdBllA/Pp4RM6N1Hy5bFPPruJq\nU7aksLxn0cvgIoLXX38dderUURI1AHTt2hVLliwBACxZsgTdunWzZBhEAFhjJHWxPZGWLHoZfN++\nfVi+fDnq1auHoKAgAMD06dMxYcIE9OrVC4sWLYJer8fq1astGQYREdFTzaLJukWLFsjMzMx33LZt\n2yy5aKI8+FwsqYntibTEN5gRERFZOSZrshmsMZKa2J5IS0zWREREVo7JmmwGa4ykJrYn0hKTNRER\nkZVjsiabwRojqYntibTEZE1ERGTlmKzJZrDGSGpieyItMVkTERFZOSZrshmsMZKa2J5IS0zWRERE\nVo7JmmwGa4ykJrYn0hKTNRERkZVjsiabwRojqYntibTEZE1ERGTlmKzJZrDGSGpieyItMVkTERFZ\nOSZrshmsMZKa2J5IS0zWREREVo7JmmwGa4ykJrYn0hKTNRERkZVjsiabwRojqYntibTEZE1ERGTl\nmKzJZrDGSGpieyItMVkTERFZOSZrshmsMZKa2J5IS0zWREREVo7JmmwGa4ykJrYn0hKTNRERkZVj\nsiabwRojqYntibTEZE1ERGTlmKzJZrDGSGpieyItMVkTERFZOSZrshmsMZKa2J5IS0zWREREVo7J\nmmwGa4ykJrYn0hKTNRERkZVjsiabwRojqYntibTEZE1ERGTlmKzJZrDGSGpieyItMVkTERFZOSZr\nshmsMZKa2J5IS0zWREREVo7JmmwGa4ykJrYn0hKTNRERkZVjsiabwRojqYntibTEZE1ERGTlmKzJ\nZrDGSGpieyItMVkTERFZOSZrshmsMZKa2J5IS0zWREREVo7JmmwGa4ykJrYn0hKTNRERkZVjsiab\nwRojqYntibTEZE1ERGTlmKzJZrDGSGpieyItMVkTERFZOSZrshmsMZKa2J5IS0zWREREVo7JmmwG\n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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 88 } ], "metadata": {}