diff --git a/Learner-timing.ipynb b/Learner-timing.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..ea1de2ba0e6a967dbc900ae7cd9138f2fd000b5e
--- /dev/null
+++ b/Learner-timing.ipynb
@@ -0,0 +1,88 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Timing"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "import holoviews as hv\n",
+    "hv.notebook_extension()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "import numpy as np\n",
+    "import learner1D\n",
+    "from time import time"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "times = []\n",
+    "xs = np.random.random((1000, 1000))\n",
+    "ys = np.random.random((1000, 1000))\n",
+    "for (i, (x, y)) in enumerate(zip(xs, ys)):\n",
+    "    learner = learner1D.Learner1D(x[:i+2], y[:i+2])\n",
+    "    start = time()\n",
+    "    learner.choose_points(n=1)\n",
+    "    stop = time()\n",
+    "    times.append(stop-start)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {
+    "collapsed": false
+   },
+   "outputs": [],
+   "source": [
+    "hv.Curve(times)"
+   ]
+  }
+ ],
+ "metadata": {
+  "anaconda-cloud": {},
+  "kernelspec": {
+   "display_name": "Python [conda env:py36]",
+   "language": "python",
+   "name": "conda-env-py36-py"
+  },
+  "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": 1
+}