{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "How do we time execution of functions\n",
    "=====================================\n",
    "\n",
    "Here we test various implementation of a naive primality test:\n",
    "- trial division of all integers below n with complexity O(n) (`is_prime1`)\n",
    "- second trial division of all integers below sqrt(n) with complexity O(sqrt(n)) (`is_prime2`) \n",
    "- hence trial division but testing only odd numbers with complexity O(sqrt(n)) (`is_prime3`)\n",
    "\n",
    "Note that these are not serious functions for testing primality of large numbers! They are only efficient to discard numbers with small divisors. The aim of this worksheet is just to introduce the notion of running time and complexity."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import timeit                     # for benchmarks\n",
    "import matplotlib.pyplot as plt   # for plots"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# the string below is the code you have to write\n",
    "# to define the function is_prime1. It is done inside\n",
    "# a string because of the way timeit is working\n",
    "code1=\"\"\"\n",
    "def is_prime1(n):\n",
    "    for i in range(2, n):\n",
    "        if n%i == 0:\n",
    "            return False\n",
    "    return True\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# code for is_prime2\n",
    "code2=\"\"\"\n",
    "def is_prime2(n):\n",
    "    i = 2\n",
    "    while i*i <= n:\n",
    "        if n%i == 0:\n",
    "            return False\n",
    "        i = i + 1\n",
    "    return True\n",
    "\"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "X = range(2, 200)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# compute the execution time for is_prime1\n",
    "time1 = []\n",
    "for n in X:\n",
    "    t = timeit.timeit('is_prime1(%d)' % n, number=10000, setup=code1)\n",
    "    time1.append(t)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# compute the execution time for is_prime2\n",
    "time2 = []\n",
    "for n in X:\n",
    "    t = timeit.timeit('is_prime2(%d)' % n, number=10000, setup=code2)\n",
    "    time2.append(t)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f223ff7c710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(X, time1, 'b', label='is_prime1')\n",
    "plt.plot(X, time2, 'r', label='is_prime2')\n",
    "plt.legend()\n",
    "plt.title('Time execution')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# code for is_prime3\n",
    "# is_prime2 is much better but we can still do twice faster\n",
    "# using still trial division...\n",
    "code3=\"\"\"\n",
    "def is_prime3(n):\n",
    "    if n&1 == 0:\n",
    "         return n == 2\n",
    "    i = 3\n",
    "    while i*i <= n:\n",
    "        if n%i == 0:\n",
    "            return False\n",
    "        i = i + 2\n",
    "    return True\n",
    "    \"\"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "X = range(5000,5200)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# compute the execution time for is_prime2\n",
    "time2 = []\n",
    "for n in X:\n",
    "    t = timeit.timeit('is_prime2(%d)' % n, number=10000, setup=code2)\n",
    "    time2.append(t)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# compute the execution time for is_prime2\n",
    "time3 = []\n",
    "for n in X:\n",
    "    t = timeit.timeit('is_prime3(%d)' % n, number=10000, setup=code3)\n",
    "    time3.append(t)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nww8588wzmT9/fsHL0166j4aIiITGzOjatWvYxWiyZ88eunbtGmq5xo8fz4YNGzjiiCOa5l1xxRV8\n8Ytf5MYbb+SSSy4JpVy50hUNEREJTWofjRdffJEJEybQp08fSktLqaysZNq0aVnlOW7cOE466SQa\nGhqorq5uymfu3LnN0iX6YSxevJgbbriBgQMH0r17d3bt2pW2j0Yi31deeYVx48bRvXt3jjvuOJYs\nWdKU3ymnnEJpaSknnHBC2qaO9957j6lTp9KvXz8+85nP8PnPf5577rmnWZphw4Y1CzIAunbtytln\nn80777zDRx99lNX+CJuuaIiISGiS+2hs2bKFCRMmUFFRwY9+9CN69erF+vXrqauryzrP7du3c845\n5zBp0iQuvPBC7r//fq688kq6devGlClTmqW/+eab6datG9dee23TFY1EPunyPffcc/nmN7/JpEmT\nuOOOO6itrWXBggV873vf49vf/jaTJ09m5syZnH/++bz99tt0794dgM2bNzN69Gg6derE1VdfTXl5\nOY899hjTpk1j165dXH311a1u18aNGyktLaW0tDSr/RE651zRvYCRgKuvr3ciInFWX1/vMj3fbdrk\nXHW1c5WV3t/GxvyVI6i8582b50pKStxbb73lHnroIVdSUuIaGhralee4ceNcSUmJu+2225rm7d27\n140YMcL169fP7d+/3znn3LJly5yZuWOPPdbt2bOnWR7Lli1zJSUlbvny5Yfku3jx4qZ5a9ascWbm\nOnfu7FatWtU0//HHH3dm5ubPn980b9q0ae6oo45yO3bsaLau2tpa17t3b/fJJ5+0uE1vvPGGO+yw\nw9yUKVPa3P62jpnE+8BIV4DvbDWdiIjExMSJ8NxzsG6d97empjjyTujVqxfOOR555BH279/frrw6\nd+7M5Zdf3jTdpUsXrrjiCjZv3kx9fX2ztFOmTMm4P8bhhx/OpEmTmqaHDh1Kr169GDZsGF/60pea\n5o8ePRqAdevWNc2rq6vj3HPP5cCBA2zbtq3pddZZZ7Fz504aGhrSrnP37t2cf/75lJaW8vOf/zyj\nckaJAg0RkZjYuLH16ajmnTB27FgmTpzIjBkzKC8v57zzzmPevHns3bs367wGDBjAYYcd1mze0KFD\ncc6xfv36ZvMHDx6ccb4DBw48ZF5ZWRlHH310s3k9e/YEYMeOHYDXLPT+++/zm9/8hj59+jR7TZ06\n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\nveUeeughV1JS4hoaGtqV57hx41xJSYm77bbbmubt3bvXjRgxwvXr18/t37/fOefcsmXLnJm5Y489\n9pD+GMuWLXMlJSVu+fLlh+S7ePHipnlr1qxxZuY6d+7sVq1a1TT/8ccfd2bm5s+f3zRv2rRp7qij\njnI7duxotq7a2lrXu3dv98knnzSbv2jRImdmTa9Ro0a5V199tc3tj1ofDTWdiIjERZDDwgowbrxX\nr14453jkkUfaPbqic+fOXH755U3TXbp04YorrmDz5s3U19c3SztlypSM+2McfvjhTJo0qWl66NCh\n9OrVi2HDhvGlL32paf7o0aMBWLduXdO8uro6zj33XA4cOMC2bduaXmeddRY7d+6koaGh2brGjx/P\nE088wQMPPMCVV15Jly5d+PDDDzPfCRGhQENEJC4K3bksz8aOHcvEiROZMWMG5eXlnHfeecybN4+9\ne/dmndeAAQM47LDDms0bOnQozjnWr1/fbP7gwYMzznfgwIGHzCsrK+Poo49uNq9nz54A7NixA/Ca\nhd5//31+85vf0KdPn2avqVOnAl7TSrI+ffowfvx4ampquP322znnnHM488wzD0kXdeqjISISF0F2\nrCpQp63f//73rFy5kj/84Q8sXbqUqVOnMmvWLF544QVKS0sDWWdqQNKaTp06ZTXfec39HDx4EICL\nLrqISy65JG3ak046qdV1f+Mb3+DHP/4xDz/8MJdddlmmRQ6dAg0RkbgIcmxwAccdjxo1ilGjRnHz\nzTezcOFCJk+ezKJFi5p++WfivffeY/fu3c2CiDVr1mBmWV3ByJc+ffrQo0cPDhw4wPjx43PKY/fu\n3QDs3Lkzn0ULnJpOREQkEtIN2xw+fDjg3d8iG/v37+fOO+9smt63bx9z586lT58+VFVVta+gOSgp\nKWHixIksWbKE11577ZD3t27d2vT/tm3b0uZx1113YWbN+oIUA13REBGRSJg/fz5z5szh61//OkOG\nDGHXrl3cddddlJWVcfbZZ2eV14ABA5g5cybr169n6NChLFq0iJdffpm77rqrxWaOVIlmj3z5xS9+\nwbJlyxg9ejSXXXYZJ554Itu3b6e+vp6nnnqqKdhYsGABd955J+eddx6VlZXs2rWLpUuX8sQTT/C1\nr32NcePG5bVcQVOgISIikTB27FhWrVrF4sWLaWxspKysjNGjR3Pfffc13awqU71792b+/PlcddVV\n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\nnUGdc3OAOS28Nz5l+i3aaKJxzqn3poiISAzpWSciIiISGAUaIiIiEhgFGiIiIhIYBRoiIiISGAUa\nRa6xEcYT8GzCAAAa1klEQVSMgSFDvL+bN4ddIpH40edMJHcKNIrcxInw3HOwbp33t6Ym7BKJxI8+\nZyK5U6BR5DZubH1aRNpPnzOR3CnQKHL9+7c+LSLtp8+ZSO4i8fRWyV1dnXcZd+NG7+RXVxd2iUTi\nR58zkdwp0ChyFRWwYkXYpRCJN33ORHKnphMREREJjAINERERCYwCDREREQmMAg0REREJjAINERER\nCYwCDREREQmMAg0REREJjAINERERCYwCDREREQmMAg0REREJjAINERERCYwCDREREQmMAg0REREJ\njAINERERCYwCDREREQmMAg0REREJjAINERERCYwCDREREQmMAg0REREJjAINERERCYwCDREREQmM\nAg0REREJjAINERERCYwCDREREQmMAg0REREJjAINERERCYwCDREREQmMAg0REREJTLwCjcZGGDMG\nhgzx/m7eHHaJREREOrR4BRoTJ8Jzz8G6dd7fmpqwSxQ/CuZERCQL8Qo0Nm5sfVraT8GciESJfvwc\nKmL7JF6BRv/+rU9L+wUZzOXrwxGxD1mLMi1nrttTyP2Qbl2FLncx7KeoKuZ9l8mPn2I5t+Qr/6j9\nIHTOFd0LGAm4+vp610xjo3PV1c5VVnp/Gxud5Fl1tXPw6au6Onp5B1lG59ymTXk6zDItZ67bE/B+\naHNdhS53MeynEGR0vBbzvqusbF6GysrgyplpPrmeJPJVzjb2SX19vQMcMNIV4Du7c6hRTr5VVMCK\nFWGXIt7q6rzoeONG74pRXV3+8s7X1ZKAm9ASPxbA+8FQU5PjYZdpOXPdnkI2JWayrqDLXQz7KQQZ\nHa/FvO/69/c2LHk6VaHPLbmeJPJVzkz2SQHFq+kkn6JwSTCKEsHc2rXe34qK/OWdr6avgJvQ8nZu\nzbScuW5PIZsS062r0OUuhv0UgoyO12Led3V1UF0NlZXe33Q/fgp9bsn1JJGvcmayTwqpEJdN8v2i\npaaTXKW7zBXkJcF068vb9fg8KnSZ8tX0FXATWt4OjUzLmev2FLIpMd26Cl3uYthPIcjoeI37viv0\nuSXXk0SB9mehm07MeV/cRcXMRgL19fX1jBw5sv0Zjhnz6WUu8CLAjRubX3qqrPR+xedDuvXBofPC\n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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f223dcf49e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(X, time2, '.b', label='is_prime2')\n",
    "plt.plot(X, time3, '.r', label='is_prime3')\n",
    "plt.legend()\n",
    "plt.title('Time execution')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# to transform a string into Python code you can use\n",
    "# the compile and eval functions\n",
    "# the code below makes available the is_prime1,\n",
    "# is_prime2 and is_prime3 functions...\n",
    "c1 = compile(code1, '/tmp/code1.pyc', 'exec')\n",
    "eval(c1)\n",
    "c2 = compile(code2, '/tmp/code2.pyc', 'exec')\n",
    "eval(c2)\n",
    "c3 = compile(code3, '/tmp/code3.pyc', 'exec')\n",
    "eval(c3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# we can then check that they agree\n",
    "all(is_prime1(n) == is_prime2(n) == is_prime3(n) for n in range(2,1000))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}