Skip to content

Instantly share code, notes, and snippets.

@isRuslan
Created March 12, 2017 12:23
Show Gist options
  • Save isRuslan/70bcca0ec2fc20a24c55131f24ba6259 to your computer and use it in GitHub Desktop.
Save isRuslan/70bcca0ec2fc20a24c55131f24ba6259 to your computer and use it in GitHub Desktop.
fib bench
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## fibonacci benchmark"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import time\n",
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"21"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def fib(n):\n",
" return n if n <= 1 else fib(n - 1) + fib(n - 2)\n",
"fib(8)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"21"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def fib_iter(n):\n",
" assert n >= 0\n",
" a, b = 0, 1\n",
" for _ in range(n - 1):\n",
" a, b = b, a + b\n",
" return b\n",
"fib_iter(8)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"21"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from functools import lru_cache\n",
"\n",
"fib_cached = lru_cache()(fib)\n",
"fib_cached(8)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Реализуем функцию `bech` для замера времени работы:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.0889998520724475e-06\n",
"1.1629999789875e-05\n"
]
}
],
"source": [
"def bech(f, *args, iter=100):\n",
" acc = float(\"inf\")\n",
" for _ in range(iter):\n",
" start = time.perf_counter()\n",
" f(*args)\n",
" end = time.perf_counter()\n",
" acc = min(acc, end - start)\n",
" return acc\n",
"\n",
"print(bech(fib_iter, 8))\n",
"print(bech(fib, 8))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Построим график зависимости времени от входного аргумента:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nRKtb4Jyr84aPAAVh5WZ7zU6vmtl1McQoItJv//TCPgJBp4fr+pDldwAAzjlnZs4brQNmOucazOxy\n4JdmdpFzrjm8jpndRaiZi4KCAsrLywe8/tbW1rjqJ5rii4/ii89QjW/zB508u6eDG2dns3/nNvYP\nfmhA6u+/WMSSKA4BM8LGC71psZTJjlK33symOefqvGaqowDOuXag3Rt+08yqgXnA9vAVOuceAx4D\nKCkpcaWlpTFsSmTl5eXEUz/RFF98FF98hmJ8m3bW8eMX3+KTxQV8/4uLycpM3A2gqb7/YhHL3nkD\nKDKz2WaWA9wGbOhRZgPwJe/upyuBJq9ZKVrdDcBqb3g18CsAM5vsXQTHzOYQukCeqGQvIsPM1v0N\nfPXpChbPHM9Dn78soUliqOjzjMI512Vm9wAvApnA4865XWa2xptfBmwCVgJVwCngy9HqeoteB/zU\nzO4EPgBu9aZ/HPg7M+sEgsAa59yJQdlaERnW9h5p5n8+uZ2ZE0fxH6tLhn2HRLGK6RqFc24ToWQQ\nPq0sbNgBd8da15veAFwfYfqzwLOxxCUiEqtDjadZ/fg2RuVk8sQdS/Sajn5IiYvZIiKJ1Hiqg9WP\nb+NUR4CfrbmK6eNG+h1SWlGiEJEhra0zwJ1PbOfgiVM8eccS5k8d43dIaUdXcURkyOoKBLnnJ2/z\n1sEP+f6fLOLKORP9DiktKVGIyJDknOOvf7WLzXvquf/mi1hxyTS/Q0pbShQiMiQ9+Jsqntp2kLuX\nXsDqq2f5HU5aU6IQkSHnqW0H+d7md/njywv5+g0X+h1O2lOiEJEh5eXd9dy3fidLL5zMtz9zid4I\nOwiUKERkyHjzgxPc85O3uKRwHA9/cTHZeup6UGgvisiQUHW0hTuf2M5540by+OoSRuXo7v/BokQh\nImnvSFMbqx9/g+zMDJ68YwkT80b4HdKQokQhImntZKfj9v/cRtPpTv7z9o8xY8Iov0MacnRuJiJp\nq60zwINvtbG/2fHDLy/h4ulj/Q5pSNIZhYikpea2Tu75ydvs+zDIdz53KdfMneR3SEOWzihEJO1s\nqT7ON362gyPNbfzpghxWLerZO7MMJiUKEUkbbZ0B/umFfTz++/eZM2k0P19zFU37K/0Oa8hTohCR\ntLCjtpGvPVNB9bGTrL7qfNauWMDInEzK1f9lwilRiEhK6wwEeeSVah767/eYlDeC/7pzCdcVTfY7\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x119f630b8>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def compare(fs, args):\n",
" for f in fs:\n",
" plt.plot(args, [bech(f, arg) for arg in args], label=f.__name__)\n",
" plt.legend()\n",
" plt.grid(True) \n",
"\n",
"compare([fib, fib_iter], list(range(20))) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Видим линейный рост `fib_iter` против экспоненциального `fib`"
]
},
{
"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.6.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment