diff --git a/experiments/2024-08-05-speed/01-measure-recent-versions.ipynb b/experiments/2024-08-05-speed/01-measure-recent-versions.ipynb index cac0572a..d41f5cc4 100644 --- a/experiments/2024-08-05-speed/01-measure-recent-versions.ipynb +++ b/experiments/2024-08-05-speed/01-measure-recent-versions.ipynb @@ -76,7 +76,7 @@ } ], "source": [ - "tags = ! git tag | grep -E '2.23.0|^3'\n", + "tags = ! git tag | grep -E '2\\.23\\.0|^3'\n", "tags = sorted(tags, key=Version)\n", "print(', '.join(tags))" ] diff --git a/experiments/2024-08-05-speed/03-validate-fix-from-pr-482.ipynb b/experiments/2024-08-05-speed/03-validate-fix-from-pr-482.ipynb new file mode 100644 index 00000000..d33caef8 --- /dev/null +++ b/experiments/2024-08-05-speed/03-validate-fix-from-pr-482.ipynb @@ -0,0 +1,303 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "2b21d45f-cf7d-4a09-964c-bc6a81a1893d", + "metadata": {}, + "source": [ + "# Measure the speed of the Markdown package after pull request [#482][1]\n", + "\n", + "After pull request [#482][1], the current version of the Markdown package for TeX no longer takes multiple seconds to initialize and process a markdown text:\n", + "\n", + " [1]: https://github.com/Witiko/markdown/pull/482" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "11e99041-b6c2-4947-b108-9ed4d7c4a46f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\\markdownRendererDocumentBegin\n", + "foo\\markdownRendererDocumentEnd\n", + "\n", + "real\t0m0.310s\n", + "user\t0m0.247s\n", + "sys\t0m0.060s\n" + ] + } + ], + "source": [ + "! docker run --rm -i witiko/markdown bash -c 'time markdown-cli <<< foo'" + ] + }, + { + "cell_type": "markdown", + "id": "b0eb626b-3eed-47a4-b5ef-6fbd39d38d54", + "metadata": {}, + "source": [ + "This Jupyter notebook measures the speed of historic versions of the Markdown package for TeX and compares them with the current version of the Markdown package." + ] + }, + { + "cell_type": "markdown", + "id": "e6ad6175-68c4-4e27-8e1f-b73d10856a74", + "metadata": {}, + "source": [ + "### Experiment\n", + "\n", + "In my experiment, I time the command `markdown-cli <<< foo` with the Docker images for all versions of the Markdown package since version 2.23.0 on my Dell G5 15 notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "d124af9e-3b7e-4661-89ee-50d121e62566", + "metadata": {}, + "outputs": [], + "source": [ + "from packaging.version import Version" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "4d863f76-7dd9-447a-a427-b0e95542dbaf", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.23.0, 3.0.0-alpha, 3.0.0-alpha.2, 3.0.0, 3.0.1, 3.1.0, 3.2.0, 3.2.1, 3.3.0, 3.4.0, 3.4.1, 3.4.2, 3.4.3, 3.5.0, 3.6.0, 3.6.1, 3.6.2, 3.7.0-dev.2\n" + ] + } + ], + "source": [ + "tags = ! git tag | grep -E '2\\.23\\.0|^3' | grep -v '3\\.7\\.0-dev\\.[01]'\n", + "tags = sorted(tags, key=Version)\n", + "print(', '.join(tags))" + ] + }, + { + "cell_type": "markdown", + "id": "9d76ba61-e07f-466c-8f89-737e5a02e099", + "metadata": {}, + "source": [ + "To determine the median times, I repeat the test five times for every version. To control for the effect of using different versions of the TeX Live distributions, I use the historic TeX Live 2022 distribution for all versions of the Markdown package. " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "6b8367fe-f2da-45a2-9582-d2d3c970cac5", + "metadata": {}, + "outputs": [], + "source": [ + "%%capture\n", + "! pip install tqdm" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "95d6a816-9b92-4a75-af64-d66b1d8cceb0", + "metadata": {}, + "outputs": [], + "source": [ + "from collections import defaultdict\n", + "from itertools import product\n", + "\n", + "from tqdm import tqdm" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "30cf12b9-89c6-4de6-a228-52d50f09a96b", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|█████████████| 90/90 [01:17<00:00, 1.16it/s]\n" + ] + } + ], + "source": [ + "durations_all = defaultdict(lambda: list())\n", + "parameters = list(product(range(5), tags))\n", + "for repetition, tag in tqdm(parameters, ncols=50):\n", + " abbrev = 8 if Version(tag) >= Version('3.2.0') else 7\n", + " lines = ! docker run --rm -i witiko/markdown:`git describe --abbrev=$abbrev --tags --always --long --exclude latest $tag`-TL2022-historic bash -c 'time markdown-cli <<< foo'\n", + " for line in lines:\n", + " if line.startswith('real'):\n", + " _, duration = line.split()\n", + " assert len(durations_all[tag]) == repetition\n", + " durations_all[tag].append(duration)\n", + " break\n", + " else:\n", + " raise ValueError(f'Unexpected output for tag {tag}: {lines}')" + ] + }, + { + "cell_type": "markdown", + "id": "454c335b-28fa-42cf-81c2-97334d7da9f7", + "metadata": {}, + "source": [ + "## Results\n", + "In this section, I discuss the results of the experiment." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "27af9f1a-ff88-45bf-b51e-57609ae5f662", + "metadata": {}, + "outputs": [], + "source": [ + "import re" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "26cc8b15-2bfe-4832-baf5-b1f46386e561", + "metadata": {}, + "outputs": [], + "source": [ + "durations_seconds_all = dict()\n", + "for tag, durations in durations_all.items():\n", + " durations_seconds = list()\n", + " for duration in durations:\n", + " match = re.match(r'(?P[0-9]+)m(?P[0-9.]+)s', duration)\n", + " assert match\n", + " duration_seconds = int(match.group('minutes')) + float(match.group('seconds'))\n", + " durations_seconds.append(duration_seconds)\n", + " durations_seconds_all[tag] = durations_seconds\n", + " assert len(durations_seconds_all[tag]) == len(durations_all[tag])\n", + "assert len(durations_seconds_all) == len(durations_all)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "80b9d16d-7e22-4565-81d6-e75652ac782a", + "metadata": {}, + "outputs": [], + "source": [ + "from statistics import median" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "2d74390f-f557-44e9-9bdc-bdfabe198cf6", + "metadata": {}, + "outputs": [], + "source": [ + "durations_seconds_median = {\n", + " tag: median(durations)\n", + " for tag, durations\n", + " in durations_seconds_all.items()\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "572d1c39-e379-4f68-b582-ef227cd3762a", + "metadata": {}, + "source": [ + "Below, I show the median processing times for all considered versions of the Markdown package." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "92e12960-4533-4aa0-bb03-3824a8fda863", + "metadata": {}, + "outputs": [], + "source": [ + "%%capture\n", + "! pip install matplotlib" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "21d88566-a463-418f-9a89-547da4094773", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "d842d771-d96f-41da-9592-aecc1f8defbd", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAHqCAYAAAAZLi26AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADRb0lEQVR4nOzdd3hTZfsH8O9JmibdpXSXQqGM0paNTMuQJSCKAxX0ZfmioiiKiPBTWSoIKqCIDBURFEWG+KrIFJAlyJS9LCB0t3SvNHl+f7QJDelI2rQZ/X6ui4vmyTkn95OTnuY+z5KEEAJEREREREREZHEyawdARERERERE5KiYdBMRERERERHVECbdRERERERERDWESTcRERERERFRDWHSTURERERERFRDmHQTERERERER1RAm3UREREREREQ1hEk3ERERERERUQ1h0k1ERERERERUQ5h0U60JCwvD6NGj9Y/37NkDSZKwZ88eq8V0N1uMyRwffPABmjRpArlcjrZt21o7HJs1evRohIWFWTuMGtGrVy9ER0dbO4w6wZzP0ejRo+Hu7m7xGEy9rq5ZswYRERFQKBTw9vbWl/OaUTvuPk/2auvWrWjbti1UKhUkSUJ6errZx5AkCRMmTLB8cDakur/vjvJ5qUnXrl2DJEn48MMPrR2K2f766y9069YNbm5ukCQJJ0+etHZIVAuYdNcxq1atgiRJkCQJ+/fvN3peCIHQ0FBIkoQHHnjAChHWjs8++wyrVq2ydhgWtX37dkyZMgXdu3fHV199hTlz5lg7JHJwcXFxmDlzpslfGA4ePIiZM2dW6Yu6OXJzczFz5sxav3lmrdetzIULFzB69GiEh4fj888/x4oVKwDY1zWjtj47VL7U1FQ8/vjjcHFxwZIlS7BmzRq4ubmVua0tnK+wsDBIkoS+ffuW+fznn3+u/z509OjRWo6O6iq1Wo1hw4YhLS0NCxcuxJo1a9CoUaMaeS3d70Bl/yr7Ppyfn4+mTZsiIiIChYWFRs8PHDgQXl5eiIuLq5F6OAonawdA1qFSqbB27Vrce++9BuV79+7FzZs3oVQqazyGHj16IC8vD87OzjX+Wnf77LPP4Ovra3Qn2ZoxVdfvv/8OmUyGL7/80i7jr02ff/45tFqttcOwe3FxcZg1axbCwsJMaiU9ePAgZs2ahdGjRxu0tlpabm4uZs2aBaC45b+m3P05qq3XrUhZ17A9e/ZAq9Xi448/RtOmTfXl9nTNqK3PTk25ePEiZDL7buf466+/kJWVhXfeeafcRFbHVs6XSqXC7t27kZCQgMDAQIPnvv32W6hUKuTn51spOqqLrl69iuvXr+Pzzz/Hf//73xp9rUWLFiE7O1v/eMuWLfjuu++wcOFC+Pr66su7detW4XFUKhWWLl2K/v37Y+7cuZgxY4b+ue+//x5bt27F4sWLERwcbPlKOBAm3XXUoEGDsH79enzyySdwcrrzMVi7di06dOiAlJSUGo9BJpNBpVLV+OuYwxZjMlVSUhJcXFxq/Mtzfn4+nJ2d7foLpEKhsHYIdq2oqIg3LWCbn6OyrmFJSUkAYJT81MQ1Izc3F66urhY7ni3Lyckpt6X3brVxI7umlfc5smXdu3fHX3/9hXXr1mHixIn68ps3b2Lfvn14+OGHsXHjRou9njmfCaqbauL3qLzP3dChQw0eJyQk4LvvvsPQoUPNHmLXr18/jBgxAnPnzsXw4cPRvHlzpKen49VXX8U999yDF154oRo1qBvs91szVcvw4cORmpqKHTt26MsKCwuxYcMGjBgxosx9tFotFi1ahKioKKhUKgQEBOC5557D7du3DbYTQuDdd99FgwYN4Orqit69e+Ps2bNGxytr7OG+ffswbNgwNGzYEEqlEqGhoXj11VeRl5dnsK9uvNStW7cwdOhQuLu7w8/PD5MnT4ZGo6mw7mFhYTh79iz27t2r71qja5UqKybdGNm///4bPXv2hKurK5o2bYoNGzYAKO4d0LlzZ7i4uKBFixbYuXOn0WveunULY8eORUBAAJRKJaKiorBy5coK49QpKirCO++8g/DwcCiVSoSFheH//u//UFBQoN9GkiR89dVXyMnJMam7kK5Ox44dQ7du3eDi4oLGjRtj2bJlBtvp3o/vv/8eb731FkJCQuDq6orMzEwAwPr169GhQwe4uLjA19cXTz/9NG7dumX0ehcuXMDjjz8OPz8//fv05ptvVuk9Wrx4MaKiouDq6op69eqhY8eOWLt2rf75rKwsvPLKKwgLC4NSqYS/vz/69euH48eP67e5eyxu6bFhK1as0L/X99xzD/766y+jGNavX4/IyEioVCpER0fjxx9/NHl8708//YTBgwcjODgYSqUS4eHheOeddyr93JpaN51z586hd+/ecHV1RUhICObPn2+0TVJSEp555hkEBARApVKhTZs2+Prrrw22Kf3eLFq0SP/efPbZZ7jnnnsAAGPGjKn0czdz5ky8/vrrAIDGjRvrt7927Zp+m2+++Ub/efLx8cGTTz6Jf//9V//8V199BUmSjD4Xc+bMgSRJ2LJlC65duwY/Pz8AwKxZs/SvM3PmzDLjSk9Ph1wuxyeffKIvS0lJgUwmQ/369SGE0JePHz/eoLWs9Dk39XWrcs0Cqn5dDQsL07dK+Pn56WOq7JpR2bkADK8jPXr0gKurK/7v//4PAFBQUIAZM2agadOm+mv5lClTDK5bwJ3xvZs3b0Z0dLT+d3/r1q36bUz57JQ2YcIEuLu7Izc31+i54cOHIzAw0OA9/+233xATEwM3Nzd4eHhg8ODBRu+t7m/O1atXMWjQIHh4eOCpp54CAFy+fBmPPvooAgMDoVKp0KBBAzz55JPIyMjQ71/WGN1//vkHw4YNg4+PD1xdXdGlSxf8+uuvBtvozucPP/yA9957Dw0aNIBKpUKfPn1w5coVg21NiaM8lV3Le/XqhVGjRgEA7rnnHkiSVO6YY1PPV0XnXKc6fzuB4ha6Rx55xOBvBAB89913qFevHgYMGGC0z99//43Ro0ejSZMmUKlUCAwMxNixY5GammpUT0mScO7cOYwYMQL16tUz6j1Y2smTJ+Hn54devXrpWx9N/b0GKv+8CCHg6+uLSZMm6cu0Wi28vb0hl8sNuvrPmzcPTk5O+jiq850KKP58P/DAA9i+fbt+zH9kZCQ2bdpksF1aWhomT56MVq1awd3dHZ6enhg4cCBOnTpldMz8/HzMnDkTzZs3h0qlQlBQEB555BFcvXq13DiEEHj22Wfh7Oysf21TzydQ/PvWsWNHqFQqhIeHY/ny5frzfDdTrpF3Gz16NHr27AkAGDZsmMH3T6C495HuWuTt7Y2HHnoI58+fNziGuZ87U5hal4ULF8LV1RXPP/88AGDq1KlITk7G8uXL7bohptYIqlO++uorAUD89ddfolu3buI///mP/rnNmzcLmUwmbt26JRo1aiQGDx5ssO9///tf4eTkJMaNGyeWLVsm3njjDeHm5ibuueceUVhYqN/urbfeEgDEoEGDxKeffirGjh0rgoODha+vrxg1apR+u927dwsAYvfu3fqyl156SQwaNEjMmTNHLF++XDzzzDNCLpeLxx57zCCWUaNGCZVKJaKiosTYsWPF0qVLxaOPPioAiM8++6zC9+DHH38UDRo0EBEREWLNmjVizZo1Yvv27eXG1LNnTxEcHCxCQ0PF66+/LhYvXiwiIyOFXC4X33//vQgMDBQzZ84UixYtEiEhIcLLy0tkZmbq909ISBANGjQQoaGhYvbs2WLp0qXiwQcfFADEwoULKztlYtSoUQKAeOyxx8SSJUvEyJEjBQAxdOhQ/TZr1qwRMTExQqlU6ut09erVco+pq5O/v7+YMGGC+OSTT8S9994rAIgvv/xSv53u/YiMjBRt27YVCxYsEHPnzhU5OTn6z9I999wjFi5cKKZOnSpcXFxEWFiYuH37tv4Yp06dEp6enqJ+/fpi2rRpYvny5WLKlCmiVatWZr9HK1as0L8Xy5cvFx9//LF45plnxMsvv6zfZsSIEcLZ2VlMmjRJfPHFF2LevHliyJAh4ptvvjF4Txs1aqR/HBsbKwCIdu3aiaZNm4p58+aJ+fPnC19fX9GgQQODz/cvv/wiJEkSrVu3FgsWLBBvv/22qFevnoiOjjY4ZnmGDh0qHn/8cfHBBx+IpUuXimHDhgkAYvLkyZXua0rdSn9eJ06cKD777DNx3333CQBiy5Yt+u1yc3NFy5YthUKhEK+++qr45JNPRExMjAAgFi1aZPTeREZGiiZNmoj3339fLFy4UFy7dk3Mnj1bABDPPvtspZ+7U6dOieHDh+vPqW777OxsIYQQ7777rpAkSTzxxBPis88+E7NmzRK+vr5Gn6cHHnhAeHl5iRs3bgghhPj777+Fs7OzeOaZZ4QQQmRnZ4ulS5cKAOLhhx/Wv86pU6fKfV9bt24tHn30Uf3jH3/8UchkMgFAnDlzRl8eFRVlcC0q/Tmq7HWrc80SourX1R9//FE8/PDDAoBYunSpPqaKrhmmnouePXuKwMBA4efnJ1566SWxfPlysXnzZqHRaET//v2Fq6ureOWVV8Ty5cvFhAkThJOTk3jooYcM6gVAtGnTRgQFBYl33nlHLFq0SDRp0kS4urqKlJQUIUTln527/fHHHwKA+OGHHwzKc3JyhJubm3jxxRf1ZatXrxaSJIn7779fLF68WMybN0+EhYUJb29vERsba3CulUqlCA8PF6NGjRLLli0Tq1evFgUFBaJx48YiODhYvPvuu+KLL74Qs2bNEvfcc4+4du2afv9GjRoZnKeEhAQREBAgPDw8xJtvvikWLFgg2rRpI2Qymdi0aZPR+WzXrp3o0KGDWLhwoZg5c6ZwdXUVnTp10m9nahxlMeVavn37dvHss88KAGL27NlizZo14uDBg2Uer7LzZco5171H1fnbqfses337dgFAXLlyRf9c27ZtxXPPPWfwnUjnww8/FDExMWL27NlixYoVYuLEicLFxUV06tRJaLVa/XYzZszQXxsfeugh8dlnn4klS5YIIYo/L25ubvptjxw5IurVqyf69esncnNz9eWm/l6b+nl58MEHRYcOHfSPT5w4IQAImUwmfvnlF3354MGDRceOHfWPq3t9atSokWjevLnw9vYWU6dOFQsWLBCtWrUSMplM//1KCCH++usvER4eLqZOnSqWL18uZs+erf/edOvWLf12RUVFok+fPgKAePLJJ8Wnn34q5s6dK+677z6xefNmIcSdv00ffPCBfp+RI0cKpVJpUFdTz+fx48eFUqkUYWFh4v333xfvvfeeCA4OFm3atBF3p0umXiPvdvDgQfF///d/AoB4+eWXDb5/7tixQzg5OYnmzZuL+fPn649Zr149g2tRRZ+7ynzwwQcCgMHxzK3L8uXLBQAxYcIEIUmSePXVV016bRKCSXcdU/oPzKeffio8PDz0fwCGDRsmevfuLYQQRkn3vn37BADx7bffGhxv69atBuVJSUnC2dlZDB482OBiprvIVJZ0l/5jpDN37lwhSZK4fv26vkyXiM6ePdtgW90Xk8pERUWJnj17GpWXl3QDEGvXrtWXXbhwQf+H7M8//9SXb9u2TQAQX331lb7smWeeEUFBQQZfJoQQ4sknnxReXl5l1lnn5MmTAoD473//a1A+efJkAUD8/vvv+rK7/8hXRFenjz76SF9WUFAg2rZtK/z9/fVJpu79aNKkiUGchYWFwt/fX0RHR4u8vDx9+S+//CIAiOnTp+vLevToITw8PAzOnxDC4PNh6nv00EMPiaioqArr5uXlZfCluizlJd3169cXaWlp+vKffvpJABA///yzvqxVq1aiQYMGIisrS1+2Z88eAcCkpLus8/3cc88JV1dXkZ+fX+G+ptRNd25Xr16tLysoKBCBgYEGieWiRYsEAIOEvbCwUHTt2lW4u7vrbxzp3htPT0+RlJRk8Fp//fWX0ee9ImX9wRdCiGvXrgm5XC7ee+89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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(10, 5))\n", + "plt.plot(*zip(*durations_seconds_median.items()), marker='o', linestyle='-')\n", + "plt.title('Median time of processing a short text with different versions of the Markdown package for TeX')\n", + "plt.xlabel('Package version')\n", + "plt.ylabel('Median processing time (seconds)')\n", + "plt.xticks(rotation=45)\n", + "plt.tight_layout()\n", + "plt.grid()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "8d67d554-3ed1-480a-b464-7682776b8301", + "metadata": {}, + "source": [ + "The results show a more than 5× slow-down in [version 3.4.3][1] of the Markdown package for TeX. However, this slow-down has been fixed in version [3.7.0-dev.2][2] after pull request [#482][3].\n", + "\n", + " [1]: https://github.com/Witiko/markdown/releases/tag/3.4.3\n", + " [2]: https://github.com/Witiko/markdown/releases/tag/3.7.0-dev.2\n", + " [3]: https://github.com/Witiko/markdown/pull/482" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/experiments/2024-08-05-speed/README.md b/experiments/2024-08-05-speed/README.md index 9dc8a4dc..0634c207 100644 --- a/experiments/2024-08-05-speed/README.md +++ b/experiments/2024-08-05-speed/README.md @@ -5,6 +5,8 @@ the following Jupyter notebook documents: - [Measure the speed of the Markdown package across recent versions][1] - [Measure the speed of the Markdown package on version 3.4.3][2] +- [Measure the speed of the Markdown package after pull request #482][3] - [1]: 01-measure-recent-versions.ipynb "Measure the speed of the Markdown package across recent versions" - [2]: 02-measure-version-3.4.3.ipynb "Measure the speed of the Markdown package on version 3.4.3" + [1]: 01-measure-recent-versions.ipynb "Measure the speed of the Markdown package across recent versions" + [2]: 02-measure-version-3.4.3.ipynb "Measure the speed of the Markdown package on version 3.4.3" + [3]: 03-validate-fix-from-pr-482.ipynb "Measure the speed of the Markdown package after pull request #482"