Nix-Guix-Substitution-Bench.../analysis-notebook/Analysis.ipynb

1102 lines
337 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"id": "87adae48-90b8-4132-bccf-fb7ec200df97",
"metadata": {},
"source": [
"# Abstract\n",
"\n",
"We evaluate the performance of a NAR-based, a file-based (uncompressed and xz-compressed) and a casync-based substitution mechanism through 3 scenarios:\n",
"\n",
"1. A curl-induced mass rebuild impact on a NixOS machine closure.\n",
"1. A single derivation version bump (Firefox) impact on the said derivation.\n",
"1. A stable -> unstable channel jump impact on a NixOS machine closure.\n",
"\n",
"For each of these scenarios, we compare how much data the substitution technique required to transfer versus how much data the NAR substitution required to transfer.\n",
"\n",
"Unsurprisingly, the mass rebuild scenario is the one for which we see the biggest improvement: nix-casync cuts down by 48.7% the amount of downloaded data, the xz-compressed file-based substitution cuts down the same amount by 38.4%.\n",
"\n",
"Surprisingly, we see an improvement in the case of a Nixpkgs stable (21.11) -> Nixpkgs unstable (20.05 pre-release) jump: xz-compressed file based substitution cuts down by 18% the amount of downloaded data, Casync by 17.2%.\n",
"\n",
"We see almost no improvements for the derivation bump scenario: xz-compressed file based substitution 1%, Casync 1%.\n",
"\n",
"For file substitution, we can see that the compression is crutial for the overall performance. Uncompressed file-based substitution is consistently 2 order of magnitude worse than the NAR-based substitution.\n",
"\n",
"We can conclude that reducing the substitution granularity, either via Casync of xz-compressed file-based substitution consistently reduces (1% -> 48.7%) the amount of transferred data in 3 different common scenarios."
]
},
{
"cell_type": "markdown",
"id": "f1eb8600-b572-498a-8f8b-15ad6b91d2b4",
"metadata": {
"tags": []
},
"source": [
"# Import Benchmark Data"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "f9d5564c-dab3-458d-923f-848e82459c6e",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"def toMb(b):\n",
" return b * (9.537e-7)"
]
},
{
"cell_type": "markdown",
"id": "4b2cb125-b30b-4049-a6d8-ea2468963085",
"metadata": {},
"source": [
"First, let's import the data generated by the `../companeSubsEfficiency` benchmark."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "f9e97b01-f776-4439-af58-ac7f1313d1a0",
"metadata": {},
"outputs": [],
"source": [
"results_dir='bench-results'\n",
"def importBenchmarkCSVs(contentDir):\n",
" return {\n",
" \"casync\": pd.read_csv(f\"{contentDir}/casync.csv\",\";\"),\n",
" \"file\": pd.read_csv(f\"{contentDir}/file.csv\",\";\"),\n",
" \"compressed-file\": pd.read_csv(f\"{contentDir}/file-xz-compressed.csv\",\";\"),\n",
" \"nar\": pd.read_csv(f\"{contentDir}/nar.csv\",\";\"),\n",
" }\n",
"\n",
"b = {\n",
" \"massRebuild\": {\n",
" \"before\": importBenchmarkCSVs(f\"{results_dir}/before-mass-rebuild\"),\n",
" \"after\": importBenchmarkCSVs(f\"{results_dir}/after-mass-rebuild\"),\n",
" },\n",
" \"channelJump\": {\n",
" \"before\": importBenchmarkCSVs(f\"{results_dir}/nixpkgs-stable-channel\"),\n",
" \"after\": importBenchmarkCSVs(f\"{results_dir}/nixpkgs-unstable-channel\")\n",
" },\n",
" \"firefoxBump\": {\n",
" \"before\": importBenchmarkCSVs(f\"{results_dir}/before-firefox-bump\"),\n",
" \"after\": importBenchmarkCSVs(f\"{results_dir}/after-firefox-bump\")\n",
" }\n",
"}"
]
},
{
"cell_type": "markdown",
"id": "81b08f0a-40e6-4379-89a8-8e14102d2c39",
"metadata": {
"tags": []
},
"source": [
"# Methodology\n",
"\n",
"For each of these benchmarks, we're going to evaluate different store path substitution techniques and compare their efficiencies.\n",
"\n",
"The following benchmarks will consist in building a NixOS machine configuration against 2 Nixpkgs commits. We'll simulate a NixOS machine update from the first commit to the second one.\n",
"\n",
"We're going to evaluate the 3 following substitution techniques:\n",
"\n",
"1. **Nar substitution**: This is the substitution model currently used by both the NixOS and Guix project. It consists in `.tar.xz`-ing a full store path. In this benchmark, we'll identify each NAR by its filename, which is derived by the `sha256` sum of their content.\n",
"1. **Casync substitution**: This is an experimental substitution method implemented via the [nix-casync](https://github.com/flokli/nix-casync) project. Here, starting from a NAR, we uncompress it and chunk it in smaller bits. In this benchmark, we'll identify each casync chunk by its filename, which is already derived the `sha256` sum of its content.\n",
"1. **File-based substitution**: This is a substitution method [the Guix](https://lists.gnu.org/archive/html/guix-devel/2021-01/msg00079.html) project brainstormed around. Basically, each store file would be served separately. In this benchmark, we'll identify these files using the `sha256` sum of their content.\n",
"1. **XZ-Compressed File-based substitution**: Similar to the File-based substitution but with each file individually compressed using the xz compression algorithm using the profile 6 extreme.\n",
"\n",
"\n",
"Note: we're using NixOS/Nixpkgs for all these benchmarks. However, since Guix currently use the same substitution mechanism, you can safely assume the same conclusions holds true for it as well."
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "2af8dcec-8665-490a-9146-86b81dd108b0",
"metadata": {},
"outputs": [],
"source": [
"def analyse_benchmark_results(i):\n",
" \"\"\"\n",
" Analyse a benchmark results.\n",
" \n",
" :param i: benchmark dataframes. Expecting a \"before\" and a \"after\" dataframe.\n",
" \n",
" Each benchmark simulates the substitutions triggered by transition between two\n",
" nix closures, a \"before\" and a \"after\" one.\n",
" \n",
" For each substitution mechanism, we then simulate what we can re-use and have \n",
" to download by diff-ing the substitution atoms (file, chunk or NAR).\n",
" \"\"\"\n",
" \n",
" _a_nar = i[\"after\"][\"nar\"]\n",
" _b_nar = i[\"before\"][\"nar\"]\n",
" _a_casync = i[\"after\"][\"casync\"]\n",
" _b_casync = i[\"before\"][\"casync\"]\n",
" _a_file = i[\"after\"][\"file\"]\n",
" _b_file = i[\"before\"][\"file\"]\n",
" _a_compressed_file = i[\"after\"][\"compressed-file\"]\n",
" _b_compressed_file = i[\"before\"][\"compressed-file\"]\n",
"\n",
" nar_closure_size = _a_nar[\"Nar Size\"].sum()\n",
" casync_closure_size = _a_casync[\"Chunk Size\"].sum()\n",
" file_closure_size = _a_file[\"Size\"].sum()\n",
" compressed_file_closure_size = _a_compressed_file[\"Size\"].sum()\n",
" \n",
" _nar_merged = _a_nar.merge(_b_nar, how = \"left\", on=\"Nar Name\", indicator=True, suffixes=(\"_after\",\"_before\"))\n",
" nar_dl_size = _nar_merged.loc[_nar_merged[\"_merge\"] == \"left_only\"][\"Nar Size_after\"].sum()\n",
" nar_reused_size = _nar_merged.loc[_nar_merged[\"_merge\"] == \"both\"][\"Nar Size_after\"].sum()\n",
" nar_nar_savings = 0\n",
" \n",
" _casync_merged = _a_casync.merge(_b_casync, how=\"left\", on=\"Chunk Name\", indicator=True, suffixes=(\"_after\",\"_before\"))\n",
" casync_dl_size = _casync_merged.loc[_casync_merged[\"_merge\"]==\"left_only\"][\"Chunk Size_after\"].sum()\n",
" casync_reused_size = _casync_merged.loc[_casync_merged[\"_merge\"]==\"both\"][\"Chunk Size_after\"].sum()\n",
" casync_nar_savings = (nar_dl_size - casync_dl_size) / nar_dl_size\n",
" \n",
" _file_merged = _a_file.merge(_b_file, how=\"left\", on=\"Sha256\", indicator=True, suffixes=(\"_after\",\"_before\"))\n",
" file_dl_size = _file_merged.loc[_file_merged[\"_merge\"]==\"left_only\"][\"Size_after\"].sum()\n",
" file_reused_size = _file_merged.loc[_file_merged[\"_merge\"]==\"both\"][\"Size_after\"].sum()\n",
" file_nar_savings = (nar_dl_size - file_dl_size) / nar_dl_size\n",
"\n",
" _compressed_file_merged = _a_compressed_file.merge(_b_compressed_file, how=\"left\", on=\"Sha256\", indicator=True, suffixes=(\"_after\",\"_before\"))\n",
" compressed_file_dl_size = _compressed_file_merged.loc[_compressed_file_merged[\"_merge\"]==\"left_only\"][\"Size_after\"].sum()\n",
" compressed_file_reused_size = _compressed_file_merged.loc[_compressed_file_merged[\"_merge\"]==\"both\"][\"Size_after\"].sum()\n",
" compressed_file_nar_savings = (nar_dl_size - compressed_file_dl_size) / nar_dl_size\n",
" \n",
" return pd.DataFrame( data = {\n",
" \"Name\": [\"NAR\", \"Casync\", \"File\", \"Compressed File\"],\n",
" \"Closure Size (MB)\": [toMb(nar_closure_size), toMb(casync_closure_size), toMb(file_closure_size), toMb(compressed_file_closure_size)],\n",
" \"Downloaded Size (MB)\": [toMb(nar_dl_size), toMb(casync_dl_size), toMb(file_dl_size), toMb(compressed_file_dl_size)],\n",
" \"Re-used Size (MB)\": [toMb(nar_reused_size), toMb(casync_reused_size), toMb(file_reused_size), toMb(compressed_file_reused_size)],\n",
" \"DL Savings Compared to NAR (%)\": [nar_nar_savings * 100, casync_nar_savings * 100, file_nar_savings * 100, compressed_file_nar_savings * 100]\n",
" })\n",
"\n",
"def gen_perf_pie(dataframe, key):\n",
" idx=mass_rebuild_results.query(f'Name == \"{key}\"').index[0]\n",
" pd.DataFrame(data={\"data\":[dataframe[\"Downloaded Size (MB)\"][idx],dataframe[\"Re-used Size (MB)\"][idx]]},\\\n",
" index=[\"Downloaded\",\"Re-Used\"])\\\n",
" .plot.pie(figsize=(6,6), y=\"data\", ylabel=\"\", title=f\"{key} Downloaded/Re-Used Data\") "
]
},
{
"cell_type": "markdown",
"id": "6e632d28-b1b7-450b-abe0-274337a6dfbb",
"metadata": {
"tags": []
},
"source": [
"# Benchmark Scenarios\n",
"\n",
"\n",
"## 1. Mass Rebuild\n",
"\n",
"Let's build the same NixOS machine description using two Nixpkgs commits: one before and one after the [staging next 2021-12-03](https://github.com/NixOS/nixpkgs/pull/148396) iteration merge to master. This staging iteration contains, among other things, a `curl` version bump. That `curl` version bump triggers a almost entire Nixpkgs mass rebuild: both `nix` and `stdenv` are depending on it.\n",
"\n",
"This mass-rebuild scenario represents a long-standing issue in terms of substitution performance."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "85c720c5-4688-4d7e-84d3-4006700a69fb",
"metadata": {},
"outputs": [],
"source": [
"mass_rebuild_results = analyse_benchmark_results(b[\"massRebuild\"])"
]
},
{
"cell_type": "markdown",
"id": "54d92b71-fefe-4721-9866-440896b9f20c",
"metadata": {},
"source": [
"### NAR Substitution Performance"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "401c1c9d-b264-4266-ac92-de660f4577bc",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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/c4999wTe/bsOfBTn/pUz5qamn95vHvvvbd93759K/v06TPw2muv/fC02JMmTeo+aNCgAb179x54/fXXd629/sknnzymZ8+eA4cNG9bvySefbFt7/bZt22IXXnhhfNCgQQMGDBhQ+fDDD7cF2LFjh33yk588sW/fvpWJROLEPXv25O3piVUmIlJUKisr99XU1LBmzZryW2+9tRPAsmXLFj/yyCMrrr766viuXbvsjDPO2PHCCy+02rx5c6ysrMzNmDGjFcCMGTNajRs3bjvAkiVLKu66665Vy5cvX/Tuu+82e+6551rVfZwgCJpMnjz5+GnTpi1bvHjxorlz57Z86KGH2gLcfvvtaxYuXLhk6dKli6ZPn9565syZFbt27bLrrrsu/vTTTy9//fXX33z//feb1K7ru9/9bpexY8duW7hw4ZJXXnnlzZtuuqnbtm3bYj/60Y86VVRU1CxbtmzxzTffvG7x4sV1z5aaV1QmIlJ0as/T9Pe//73VZZddtgng5JNP3tO1a9d9b7zxRvMxY8Zsf/XVV1s/99xzrSdMmLB1165dZdu3b4+tXr262ZAhQ/YCDB48eGevXr32l5WVMXDgwF1vv/1207qP8eqrr7Y8/fTTt3ft2rWqSZMmXHTRRZtfeumlVgAPPvhg+8rKygGVlZWVb731VvP58+c3nzdvXvNu3brtHTx48N5YLMakSZM21a5r2rRpx9xxxx1d+vfvXzly5Mh+e/futeXLlzd99dVXW1166aWbAIYPH767b9++u3L0FDaYtpmISFFZvHhx07KyMo4//viqQ538b9SoUbuuuOKKFi+//PLec845Z9vGjRvLp0yZ0mHw4ME7a+/TrFmzDxcuKyujqqrqI1NMh1r30qVLm955552dZ8+evaRjx47VEydOjO/ZsycGYHbwWSrnHE8++eTy2iKr61DL5BuNTESkaKxdu7b8qquu6nH55Ze/H4vFGDly5I6HH364PcCCBQuarVu3rulJJ520p3nz5q5Lly77n3766XZjx47deeaZZ26/6667jjvjjDN21PexRo0atXPmzJmt161bV15VVcUTTzzRfsyYMTu2bNlSVlFRUdO+ffvqVatWlU+bNq0NwNChQ/esXr266aJFi5oBPPbYY+1r1zV27NhtP/7xjzvXbpeZPn16BfCR/K+//nrzZcuW5eWeXKCRiYgUuL1798b69+9fWVVVZWVlZe6iiy7adMstt7wH8K1vfev9Sy+9tEffvn0ry8rKuPfee4OKigoHMGLEiO0vv/zyMa1bt64ZP378jquvvrrJ2LFj610mPXr02H/zzTevGT16dF/nnI0bN27rJZdc8gHAoEGDdvXp02dg9+7d9w4bNmwHQIsWLdzPfvazlZ/85Cd7t2/fvmr48OE7lixZUgGQSqXWXn311d379+9f6Zyzbt267X3xxReX33jjje9ffPHFPfv27Vs5cODAXXVHTvlG54AXkaM2f/78YMiQIRt95yh18+fP7zBkyJC4zwya5hIRkYypTEREJGMqExERyZjKREREMqYyERGRjKlMREQkYyoTESlotYeg79Onz8Czzjqr98aNG8sasnyLFi1Orvv9T3/602Mvu+yy7pnmmjhxYvyBBx5ol+l6CoU+tCgi2TO5TVYPQc/krQ06BP1nP/vZ+G233dbx1ltvXZ/VHHJEGpmISNE4/fTTd65Zs6YpwKJFi5qdeeaZfQYOHDhg2LBh/ebOndu8oeu7//772/Xp02dgv379Kk855ZR+AFVVVVxzzTXdBg0aNKBv376Vt912WweAmpoaLrvssu69evUaOGbMmN4bN24sqTfrJfXDikjxqqqq4sUXX2x9xRVXbAS48sore/ziF79YOXjw4L0vvPBCy2uvvbb7jBkzljVknalUqstf//rXZT179txfO302ZcqUDm3atKleuHDhkt27d9upp57a//zzz982c+bMFsuXL2/25ptvLlq9enWTwYMHD/zyl7+86UiPUSxUJiJS0GqPzbVmzZqmgwYN2nXBBRds27p1a2zu3LmtLrzwwl6199u3b1+9D79rZg7glFNO2TFp0qT4xIkTt0yaNGkLwN/+9rdjli5d2uLpp59uB7B9+/ayxYsXN3/ppZdaf/7zn99cXl5OPB7fP2LEiO3Z/lnzmcpERApa7TaTTZs2lU2YMKF3KpXq9LWvfW1j69atq2q3pdSqqqpi0KBBlQDnnnvuB1OmTFnbrFmzmj179ljz5s0dwObNm8s7dOhQBfDII4+8+8ILL7R8+umn2wwdOnTgvHnzFjnn7Mc//vG7EydO3FZ33VOnTm1TKIeLbwzaZiIiReHYY4+t/ulPf/ruXXfd1blly5auW7du++6///52EG7PeO211yrKy8tZunTp4qVLly6eMmXK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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"gen_perf_pie(mass_rebuild_results, \"NAR\")"
]
},
{
"cell_type": "markdown",
"id": "52834fa5-7116-4ec5-82a9-73d2322ea2cc",
"metadata": {
"tags": []
},
"source": [
"### Casync Substitution Performance"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "90a90aca-0ed4-47a5-a174-cbfd9eec04ee",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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yiesof79+3ebPn16o9rO59VXX206dOjQLi5eWylV92p9+r5INNYvGUHKFBUOm1PZc+rXr1+6dOnSxQCrV68OjRgx4sh4PJ573333rUlmFqWUqo5AjlATHX744SXjx48veuKJJ1qXlpayY8cO+fGPfxzJz88v6NGjR8Err7zSFGDw4MFdZs2a1RCgR48eBWPHjm0L8Otf/7rdvffee+irr77atH///t3OOOOMIzt16tTz7LPP7lRaWvpfr/foo4+2zM/PL+jatWvPq6+++vCy+0eNGtWhV69ePbp06dLzuuuua1d2/4svvtisU6dOPfv169ftxRdfbF52/5YtW3JGjBgR6dWrV48ePXoUTJw4sTnAtm3b5MwzzzwyPz+/YNiwYUfu2rVLr9ejVEAEvlABCgoKdpeWlrJ69erQXXfd1Rpg2bJliydNmvT5FVdcEdmxY4cMHDhw25QpU5ps2rQpJzc318ycObMJwMyZM5uccsopWwGWLFnS8KGHHvpq+fLli7788sv6b7755n5X8iwqKsrzPO/wqVOnLlu8ePGiuXPnNn7mmWeaA9x7772rFy5cuGTp0qWL3nvvvaazZs1quGPHDrnmmmsikydPXj579uxP161b993VMG+66aa2Q4cO3bJw4cIl77777qe///3v22/ZsiXnz3/+c+uGDRuWLlu2bPHNN9+8dvHixY1T9kEqpWolIwoVKLtGOO+//36Tiy66aCPA0Ucfvatdu3a7P/nkkwZDhgzZOmPGjKZvvvlm09NOOy2+Y8eO3K1bt+asWrWqfp8+fYoBevfuvb1z5857cnNz6dmz544VK1bUS3yNGTNmND7++OO3tmvXriQvL4+RI0dumjZtWhOAp556qmVBQUGPgoKCgs8++6zB/PnzG8ybN69B+/bti3v37l2ck5PDqFGjNpbNa+rUqc3uu+++tt27dy8YNGhQt+LiYlm+fHm9GTNmNBk9evRGgAEDBuzMz8/fkaKPUClVSxlxCZTFixfXy83N5fDDDy852AmzTzrppB2XXXZZo+nTpxeffvrpWzZs2BAaN27cob179/7ugnn169f/buLc3FxKSkr2W9w+2LyXLl1a78EHH2wzZ86cJa1atdo7fPjwyK5du3IA9r/q7/7zevHFF5eXlXmig02jlEpvgR+hrlmzJjRmzJiOl1xyybqcnBwGDRq0beLEiS0B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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"gen_perf_pie(mass_rebuild_results, \"Casync\") "
]
},
{
"cell_type": "markdown",
"id": "d0ef7f9b-dc53-4c02-b4e4-46be01c019bd",
"metadata": {},
"source": [
"### File-Based Substitution Performance"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "b9e22d70-5090-43d4-96f0-02fa3e4be6d1",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"gen_perf_pie(mass_rebuild_results, \"File\")"
]
},
{
"cell_type": "markdown",
"id": "0b4b8c30-8f76-490b-ac55-d156d62295b8",
"metadata": {},
"source": [
"### Compressed File-Based Substitution Performance"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "08deae34-5cf4-4353-a5d8-a8096264ec79",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"gen_perf_pie(mass_rebuild_results, \"Compressed File\")"
]
},
{
"cell_type": "markdown",
"id": "31d2ad3d-7401-49ac-97ce-f43836e10fb6",
"metadata": {},
"source": [
"### Comparing the Substitution Techniques\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "f4a4eb7b-6cf0-413e-9b6e-3bf6e0c467e9",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 9,
"id": "f9df4de3-a6f1-480f-abb1-0cebbbf9ee95",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Closure Size (MB)</th>\n",
" <th>Downloaded Size (MB)</th>\n",
" <th>Re-used Size (MB)</th>\n",
" <th>DL Savings Compared to NAR (%)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>NAR</td>\n",
" <td>386.060194</td>\n",
" <td>372.989991</td>\n",
" <td>13.070203</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Casync</td>\n",
" <td>608.652010</td>\n",
" <td>192.194724</td>\n",
" <td>416.457286</td>\n",
" <td>48.471882</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>File</td>\n",
" <td>1652.194177</td>\n",
" <td>705.665216</td>\n",
" <td>973.347687</td>\n",
" <td>-89.191462</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Compressed File</td>\n",
" <td>476.522900</td>\n",
" <td>229.488728</td>\n",
" <td>247.034172</td>\n",
" <td>38.473221</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Closure Size (MB) Downloaded Size (MB) \\\n",
"0 NAR 386.060194 372.989991 \n",
"1 Casync 608.652010 192.194724 \n",
"2 File 1652.194177 705.665216 \n",
"3 Compressed File 476.522900 229.488728 \n",
"\n",
" Re-used Size (MB) DL Savings Compared to NAR (%) \n",
"0 13.070203 0.000000 \n",
"1 416.457286 48.471882 \n",
"2 973.347687 -89.191462 \n",
"3 247.034172 38.473221 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mass_rebuild_results"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "8a800b9f-fb85-4b4f-a713-588971ecdc9b",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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+4B3lbO7+vXvaHtt+UlZ+1PAAIrfZ8px6BMpPiguoOht/jSv55JvUJxL8mxEtIxXPwe4tPzbd0RmTqfoGPl2Wc8sihMoOzIBuDkzV/contShyFzdI5aSJPUtETGCIiyvmT3wmvQRMZjiQ+wuuXonyKpGRPwFODEz72t0LepbDNSSpKbX0wO1pJ7NIR+SJElSBfZQS5IkSRXYQy1JkiRV0NlvYuuRNt544xwxYkSjy5AkSVIfd9dddz2TmW1+AVOvDtQjRoxg+vTpjS5DkiRJfVxEtPuNrA75kCRJkiowUEuSJEkVGKglSZKkCnr1GGpJkiSAJUuWMGfOHF599dVGl6JebsCAAQwbNow111yz0+sYqCVJUq83Z84c1l9/fUaMGEFENLoc9VKZycKFC5kzZw4jR47s9HoO+ZAkSb3eq6++ykYbbWSYViURwUYbbbTaRzoM1JIkqU8wTKsrvJH3kYFakiRJqsAx1JIkqc8ZceZvunR7j593SJduT32LPdSSJEldoF+/fowZM4YddtiBnXfemQsuuIDXXnutbo83fvz4LvnG6JtvvplDDz20Sx772muvZZdddmHnnXdm++235+KLLwbgoosu4rLLLqtc6913382HPvQhAC655BIigmnTpi2ff9VVVxER/PznP19e5zbbbMOYMWPYbrvtmDx58vJl999/f5599tnKNUEde6gjYhvgZzVNWwBfBC4r20cAjwNHZOaz5TpnAScCy4CPZub19apPkiSpKw0cOJB77rkHgPnz53P00UezaNEizj333MYW1k2WLFnCySefzB133MGwYcNYvHgxjz/+OACnnHJKlzzGl7/8Zb7whS8sn95pp5248sor2W+//QCYMmUKO++88wrrXHHFFYwdO5Z//vOfbLnllpxwwgmstdZaHHfccXz3u9/l85//fOW66haoM/MhYAxARPQDngSuAs4EpmXmeRFxZjn92YjYHjgS2AHYFPh9RGydmcvqVaMkqefq6kP2zc4hC91ryJAhTJ48md12241zzjmHxYsXc+qppzJ9+nT69+/PBRdcwD777MPBBx/Meeedx+jRo9lll114z3vewxe/+EXOPvtshg8fzlZbbcU555zDxhtvzH333cdb3/pWLr/88pVOnLvyyiv58pe/TGZyyCGH8NWvfhWAU089lTvvvJNXXnmF9773vcvD/XXXXccZZ5zBxhtvzK677rp8Oy+99BKnn3469957L0uXLuWcc85h4sSJvPLKK3zgAx/g/vvvZ7vttuOVV15Z6Tm/8MILLF26lI022giAtddem2222QaAc845h/XWW4+jjz6agw8+ePk69957L48++ijrrLMOp5xyCrNnzwbgwgsvZI899lhp+zNmzFghMO+111784Q9/YMmSJSxevJhZs2YxZsyYNl+TF198kXXXXZd+/foBMGHCBPbaa6+eHahb2Q/4e2b+IyImAuPL9kuBm4HPAhOBKZm5GHgsImYB44A/dVONkiRJXWaLLbbgtddeY/78+Vx++eVAESAffPBBDjjgAB5++GH23ntv/vCHPzBixAj69+/PbbfdBsAf//hHjj32WObNm8fdd9/NzJkz2XTTTdljjz247bbb2HPPPZc/zty5c/nsZz/LXXfdxaBBgzjggAP41a9+xWGHHcakSZPYcMMNWbZsGfvttx8zZsxg66235qSTTuKmm25iq6224n3ve9/ybU2aNIl9992XH/3oRzz33HOMGzeO/fffn4svvph11lmHGTNmMGPGjBVCeIsNN9yQCRMmMHz4cPbbbz8OPfRQjjrqKNZY4/URxptuuunyXvzvfOc73HLLLQwfPpyjjz6aj3/84+y5557Mnj2bAw88kAceeGCF7U+fPp0dd9xxhbaIYP/99+f6669n0aJFTJgwgccee2yFZY455hjWXnttHnnkES688MLlgXrQoEEsXryYhQsXLv8Q8EZ11xjqI4Ery/ubZOY8gPJ2SNm+GfBEzTpzyrYVRMTJETE9IqYvWLCgjiVLkiRVk5lAEZCPO+44ALbddluGDx/Oww8/zF577cWtt97KH//4Rw455BBefPFFXn75ZR5//PHlvbvjxo1j2LBhrLHGGowZM2b5MIoWd955J+PHj2fw4MH079+fY445hltvvRWAqVOnsuuuu7LLLrswc+ZM7r//fh588EFGjhzJqFGjiAiOPfbY5du64YYbOO+88xgzZgzjx4/n1VdfZfbs2dx6663Llxs9ejSjR49u8/n+4Ac/YNq0aYwbN47zzz+fD37wg20ud9ttt/GDH/yAH/3oRwD8/ve/5yMf+QhjxoxhwoQJPP/887zwwgsrrDNv3jwGDx680raOPPJIpkyZwpQpUzjqqKNWmn/FFVcwY8YMZs+ezfnnn88//vGP5fOGDBnC3Llz26xxddS9hzoi1gImAGetatE22nKlhszJwGSAsWPHrjRfkiSpJ3j00Ufp168fQ4YMWR6sW9ttt92YPn06W2yxBe985zt55pln+P73v89b3/rW5cusvfbay+/369ePpUuXrrCN9rb92GOPcf7553PnnXcyaNAgTjjhhOVfWNLetZYzk1/84hfLw3ytzl6feaeddmKnnXbiuOOOY+TIkVxyySUrzJ83bx4nnngi11xzDeuttx4Ar732Gn/6058YOHBgu9sdOHBgm1+4Mm7cOO677z4GDhzI1ltv3e76gwcPZtddd+Uvf/kLw4cPB4ovBOroMTurO4Z8vAv4a2Y+XU4/HRFDM3NeRAwF5pftc4DNa9YbBlT/yCBJkppOo8eML1iwgFNOOYWPfOQjRAR77703V1xxBfvuuy8PP/wws2fPZptttmGttdZi8803Z+rUqZx99tksWLCAT33qU3zqU5/q9GPtvvvufOxjH+OZZ55h0KBBXHnllZx++uk8//zzrLvuurz5zW/m6aef5ne/+x3jx49n22235bHHHuPvf/87W265JVdeeeXybR144IF861vf4lvf+hYRwd13380uu+yyvP599tmH++67jxkzZqxUx4svvsj06dMZP348APfcc8/y4NpiyZIlHHHEEXz1q19dIfwecMABfPvb3+bTn/708nVbj4Xebrvt+NrXvtbmPvjKV77CgAEDOtxPL7/8MnfffTef+cxngOLDw1NPPcWIESM6XK8zuiNQH8Xrwz0ArgGOB84rb6+uaf9pRFxAcVLiKOCObqhPkiSpsldeeYUxY8awZMkS+vfvz3HHHccnPvEJAP7jP/6DU045hZ122on+/ftzySWXLO953muvvZg2bRrrrLMOe+21F3PmzGGvvfbq9OMOHTqUr3zlK+yzzz5kJgcffDATJ04EYJdddmGHHXZgiy22WH6S34ABA5g8eTKHHHIIG2+8MXvuuSf33XcfAGeffTZnnHEGo0ePJjMZMWIE1157Laeeeiof+MAHGD16NGPGjGHcuHEr1ZGZ/Pd//zcf/vCHGThwIOuuu+5KvdO33347d955J1/60pf40pe+BMBvf/tbvvnNb3LaaacxevRoli5dyt57781FF120wrrbbrstixYt4oUXXmD99ddfYd673vWudvfPMcccw8CBA1m8eDEnnHDC8t7/u+66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\n",
"text/plain": [
"<Figure size 864x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"_ = mass_rebuild_results.plot.bar(figsize=(12,5), x=\"Name\",y=\"Downloaded Size (MB)\",title=\"Volume to Download for the Mass Rebuild Update (less is better)\", xlabel=\"\", ylabel=\"Size in MB\")"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "326255a1-a681-4405-9a40-889651392948",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtYAAAGGCAYAAABfdsasAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAA0/klEQVR4nO3debxd873/8dcniUrMLTEPQbWEhJJQQxVpS823JGKMn5ZbpTWVGkrRal3TpZfellKtCqKCFK0aamyJcIPEUClKSCWCiCBCPr8/1jrHTpxzcsI+Z53h9Xw8ziN7r/Gzh5Pz3t/9WWtFZiJJkiTpk+lRdQGSJElSV2CwliRJkurAYC1JkiTVgcFakiRJqgODtSRJklQHBmtJkiSpDgzWkioVEW9FxFpV19EVRcQ2ETG56jrqLSJ+FhFHVl3H/CLiSxHx9MdY7/KI+Elb1PRxRcToiNih6jqkzsZgLXVREfF8RLwTETMj4o2I+FtEfDsietQs0+o/6BHxzYh4qtzeKxFxc0Qs+UnrzMwlMvPZT7qdhRERn4qIUyPimYiYVT5Xl0VEv/aso2oRkRHx2Y+5br9y/Zvnm/77iDh1vmlrRsTciPhFMzXMKj9gvRQR50VEzxb22xc4APjVx6m7LWXmvZn5+fbcZ1O/w+X7+SufcNNnAmd8wm1I3Y7BWuradsnMJYE1KP5Q/gC4dGE3EhFfBn4K7F1ubz1gVD0LbWd/AHYF9gGWBjYEHgaGVFnUgrQUOCv0xYjYcgHLHAC8DgyPiEWbmL9hZi4BfBnYCziohW0dCNySme98nGIXRkT0aut9dDRR6JGZY4GlImJQ1TVJnYnBWuoGMnNGZo6hCC0jImKDhdzEYODvmfl/5fZey8zfZuZMgIjYKSL+LyLejIgXa0csI+LPEXF47cYi4tGI+EZ5u3HUtBx9u6gcDZ8ZEQ9GxNo1630tIp6OiBkR8YuIuDsivlXO+2x5f0ZEvBoR1zT1QMqRvK8Cu2XmQ5n5fvn8XJSZl5bLrBwRYyLitYiYFBEH16x/akRcW47MzoyIxyPicxFxQkRMLR//12qWv6tsXRhb1nZjRHymZv61EfHvct49EbF+zbzLI+J/I+KWiJgFbFvWdl1ETIuI5yLiezXL9ynXeT0inihftyZFxD3lzUfL0eK9yukHl4/5tfI5WLm5bZTOAhb0rccBwA+BOcAuzS2UmZOA+4GNWtjW14G7ax7HNhExOSKOK5//KRGxe0TsGBH/KB/HiTXLLxoR50fEy+XP+Q1hv2ZbP4iIfwO/iYgeEXF8RPwzIqZHxKja169WzNd6U27npfJ98nREtPTBbbmIuK1c9u6IWKNmO+uW814rtzOsnH4IsC9wXPka/jEirgBWB/5YTjuuXPaLUXxr9UYUv3/b1Gz/rog4IyLuB94GGlqz7gJ2aqFmSfMxWEvdSDkKNRn40kKu+iCwfUScFhFbxkdHHWdRhKdlKP4QHxoRu5fzRgJ7NywYEf0pRtBvpml7A6cBnwYmUX4dHRHLUYw0nwAsCzwNbFGz3o+Bv5TrrQr8TzPb/wowNjNfbOHxXkXxPK0M7An8dL5QtAtwRbmv/wNupfj/dBXgdD7apnAAxSjsysD7wM9r5v0JWAdYHngEuHK+dfeheA6WBP4G/BF4tNzXEODIiNi+XPZHwNrlz/bAiOYeYGZuXd7csGzHuSYitgN+BgwDVgL+BVzd3DZKFwGfi2ZaDyLiSxSvx9UU33Ic0NyGImJdivfmpBb2N4Dita+1ItCb4jk5BbgE2A/YpNzeKfFhH/9JwBcpwvuGwKYUob92W5+heI8eAnwP2J1iNH1lipH3i1qor+GxfB44HBhcfsuzPfB8C6vsS/EeXg4YT/k+iIjFgdsofo+Wp/j9+EVErJ+ZF5fLnVW+hrtk5v7ACxTfVi2RmWdFxCoUv28/KR/b94HromirabB/+XiXpHjdAZ4snyNJrWSwlrqflyn+uLZaZt4LfAPYmOIP9PSo6YXNzLsy8/HMnJuZj1EE0y+Xq18PbFQzArcvMDozZzezu9GZOTYz36cIDRuV03cEJmbm6HLez4F/16w3hyIMrZyZ72bmfc1sf1lgSnOPNSJWA7YCflBuZzzwa4rg0eDezLy1rONaoC9wZmbOoQiQ/SJimZrlr8jMCZk5CzgZGFbz3F2WmTPL5+NUYMOIWLpm3Rsz8/7MnEsRKvtm5umZ+V7Zm34JMLxcdhhwRvmNwovMG+BbY1/gssx8pKznBGDzaLn3/F2K4N/cqPUI4E+Z+TpFOPx6RCw/3zKPlCPyT1KMkn6kF7vGMsDM+abNoXjcDc//csAF5fM6EZgIDKx5jKdn5tTMnEbxIa72tZ0L/CgzZ5ftJv8JnJSZk2teoz1jwW0iHwCLAv0jYpHMfD4z/9nC8jdn5j3lPk6ieN5XA3YGns/M35TfrjwCXEfxga+19qNon7ml/B29DRhH8TvV4PLMnFjuY045bSbF8y2plQzWUvezCvDawq6UmX/KzF0oQvluFL2uDW0Ym0XEX8v2hBnAtynCDWW7yM18GP6G89FR2Vq1YfltYIny9spA4yhzZibFqHKD44AAxkbExIhork93OsVobHNWBl5raHMp/YvieWvwSs3td4BXM/ODmvvU1E1t3eW2FqH46r9nRJxZthm8yYcjmss1s+4awMrl1/lvRMQbwInACjW1z7+vhbFy7TqZ+RbF87VKs2sULgFWiIh52jwiog8wlPL1zsy/U4ym7jPf+htTPF97AZsBi7ewr9cpRlVrTW/i+Z//Nap9H9U+L/8qpzWYlpnv1txfA7i+5vl+kiI0r0ALyraWIymC+NSIuHoBbTW17+23KH5HVy73v9l8r/m+FCPrrbUGMHS+bWzFvL8HTX2DsyTwxkLsR+r2DNZSNxIRgylCUnOjuQtUjnjdAdwJNPRqjwTGAKtl5tLALylCboOrgL0jYnOgD/DXj7HrKRQtBUBxkFXt/cz8d2YenJkrU4wy/iKaPuPF7cCmEbFqE/OgHNGPec94sjrw0seoucFq821rDvAqRcDcjaI9ZWmgX7lM7XOXNbdfBJ7LzGVqfpbMzIaRxylN7GthvEwRwooiijaEZVnAYy9HOE+jaGWorf0/gKUoXot/l33Lq9BEO0gWRgF/p2jnaM5jwOda9WiaNs9jpHiOXq4tZb7lXwS+Pt9z3jszF/h+yMyRmblVub8E/quFxRtft4hYguID7Mvl/u+eb/9LZOahzdTb3GO4Yr5tLJ6ZZ7awDhQHKT/a4oOUNA+DtdQNRMRSEbEzxdfkv8/Mx2tm94yI3jU/n2pi/d0iYnhEfDoKm1K0ejxQLrIkxSjvu+W8+Uckb6EIF6cD15RtDQvrZmBAFAem9QIOo2bULiKG1oTl1ymCwgfzbyQzb6foWb0+IjaJiF4RsWQUpyI8qGyh+Bvws/L5GAh8k5ZH2Rdkv4joHxGLUTwHfyhHWJcEZlOMCi9GceaVlowF3iwPiutTjnhvUH5ggqKH+YTydVoV+O4CtvcKHx6oBsUHpP8XERuVffQ/BR7MzOdb8RivoGh9qD338QjgMooWlo3Kny0pWoMGNLOdM4FDIqK5Edlb+LDN6OO4CvhhRPQt+/ZPAX7fwvK/BM5oaGUq19ttQTuJiM9HxHbl8/guxaj5R96PNXaMiK3K378fUzzvLwI3UfSw7x8Ri5Q/gyNivXK9+V/Dpqb9HtglIrYv3zO9ozjQsrkPlw2+THEMgKRWMlhLXdsfI2ImxYjVScB5wP+bb5njKf7oN/zc2cR2XgcOBp4B3qT4Q312ZjaEze8Ap5f7OoX5TsVX9o2OphiZHflxHkhmvkrRVnAWRRDtT9En2tCrPRh4MCLeohg9PyIzn2tmc3tSBLRrgBnABGAQxWg2FAeI9aMYMbyeouf2to9Td+kK4HKKNpfeFAfEAfyOohXhJeAJPvyg0qQyjO9CEVCfoxj1/jXFaDcUo8b/Kuf9pdxvS04Fflu2Bwwrv4k4maKHdwrFQZDDW1h//tp+RNm/Xx4wNwQ4v/w2oeHnYeDPNHNgZfmh727g2GZ29TuKENqnNXU14ScU75vHgMcpDhht6awmF1C8n/5Svr8foGhXWZBFKT4kvErxui9P0bbTnJEUz99rFAdd7guNrVRfo3gdXi639V/l9qE4fWb/8jW8oZz2M4oPD29ExPfLgL5buf9pFP8fHEsLGaD8sDYriwOeJbVSFG2KktS5RHGhm8nAvpn5cVpL2kVE3EXxLcGvq66lq4iInwJTM/P8qmvpqiLiOuDSzLyl6lqkzqTbnfxeUucVxWnlHqQYWT+Wop+3xVFedT2Z2dLIr+ogM/eougapM7IVRFJnsjnwT4qv13cBds92uAKfJEmtYSuIJEmSVAeOWEuSJEl10CV6rJdbbrns169f1WVIkiSpi3v44Ydfzcy+Tc3rEsG6X79+jBs3ruoyJEmS1MVFRLNXtbUVRJIkSaoDg7UkSZJUBwZrSZIkqQ66RI+1JElqnTlz5jB58mTefffdqkuROrTevXuz6qqrssgii7R6HYO1JEndyOTJk1lyySXp168fEVF1OVKHlJlMnz6dyZMns+aaa7Z6PVtBJEnqRt59912WXXZZQ7XUgohg2WWXXehvdgzWkiR1M4ZqacE+zu+JwVqSJEmqA3usJUnqxvodf3Ndt/f8mTstcJmePXsyYMAA5syZQ69evRgxYgRHHnkkPXr04K677uKcc87hpptuanb9Bx54gCOOOILZs2cze/Zs9tprL0499dSFrnXMmDE88cQTHH/88Qu9bmv96U9/4uSTT2bWrFlkJjvvvDPnnHNOm+2v3pZYYgneeuuteaa98cYbjBw5ku985zsLta2I4Oijj+bcc88F4JxzzuGtt96a57XbcMMN6d+/P1dddVXjtAMPPJC7776bpZdemszkvPPOY8iQIU3u48gjj+Qb3/gGW2+9Nfvuuy+PP/44O++8Mz/96U8B+PGPf8zAgQPZbbfdALjpppt46KGHOO200xbqsTTHEWtJktSu+vTpw/jx45k4cSK33XYbt9xyy0IFmxEjRnDxxRczfvx4JkyYwLBhwz5WHbvuumubhuoJEyZw+OGH8/vf/54nn3ySCRMmsNZaa7XZ/lrr/fff/0Trv/HGG/ziF79Y6PUWXXRRRo8ezauvvtrk/CeffJK5c+dyzz33MGvWrHnmnX322YwfP57zzz+fb3/7202u/9prr/HAAw+w9dZb89hjjwHw2GOPce+99zJjxgymTJnC2LFjG0M1wE477cSYMWN4++23F/rxNMVgLUmSKrP88stz8cUXc+GFF5KZrVpn6tSprLTSSkAx+t2/f38Axo4dyxZbbMEXvvAFtthiC55++mkANttsMyZOnNi4/jbbbMPDDz/M5ZdfzuGHHw4Uo6Lf+9732GKLLVhrrbX4wx/+AMDcuXP5zne+w/rrr8/OO+/Mjjvu2Djv+OOPp3///gwcOJDvf//7H6nzrLPO4qSTTmLdddcFoFevXo2jvP/6178YMmQIAwcOZMiQIbzwwguNdRx66KFsu+22rLXWWtx9990cdNBBrLfeehx44IGN215iiSU45phj2HjjjRkyZAjTpk0D4JJLLmHw4MFsuOGG7LHHHo2B8cADD+Too49m22235Qc/+AH//Oc/2WGHHdhkk0340pe+xFNPPQXAc889x+abb87gwYM5+eSTm3z+jz/+eP75z3+y0UYbceyxx5KZHHvssWywwQYMGDCAa665psn1evXqxSGHHMJ///d/Nzl/5MiR7L///nzta19jzJgxTS6z+eab89JLLzU57w9/+AM77LADAIsssgjvvPMOc+fO5b333qNnz56ccsopnH766fOsExFss802LX5DsjBsBZEE1P/r4O6sNV+FS/rQWmutxdy5c5k6dWqrlj/qqKP4/Oc/zzbbbMMOO+zAiBEj6N27N+uuuy733HMPvXr14vbbb+fEE0/kuuuuY/jw4YwaNYrTTjuNKVOm8PLLL7PJJpvw+OOPz7PdKVOmcN999/HUU0+x6667sueeezJ69Gief/55Hn/8caZOncp6663HQQcdxGuvvcb111/PU089RUTwxhtvfKTOCRMmcMwxxzT5GA4//HAOOOAARowYwWWXXcb3vvc9brjhBgBef/117rzzTsaMGcMuu+zC/fffz69//WsGDx7M+PHj2WijjZg1axYbb7wx5557LqeffjqnnXYaF154Id/4xjc4+OCDAfjhD3/IpZdeyne/+10A/vGPf3D77bfTs2dPhgwZwi9/+UvWWWcdHnzwQb7zne9w5513csQRR3DooYdywAEHcNFFFzVZ+5lnnsmECRMYP348ANdddx3jx4/n0Ucf5dVXX2Xw4MFsvfXWjR9+ah122GEMHDiQ44477iPzrrnmGm677TaefvppLrzwQvbee++PLPPnP/+Z3Xffvcm67r//fvbcc08A1ltvPVZffXU23nhj9t9/fyZNmkRm8oUvfOEj6w0aNIh77733Y3/zUcsRa0mSVLnWjlYDnHLKKYwbN46vfe1rjBw5snGUcsaMGQwdOpQNNtiAo446qnGUetiwYVx77bUAjBo1iqFDhza53d13350ePXrQv39/XnnlFQDuu+8+hg4dSo8ePVhxxRXZdtttAVhqqaXo3bs33/rWtxg9ejSLLbbYQj3ev//97+yzzz4A7L///tx3332N83bZZRciggEDBrDCCiswYMAAevTowfrrr8/zzz8PQI8ePdhrr70A2G+//RrXnzBhAl/60pcYMGAAV1555Twj9UOHDqVnz5689dZb/O1vf2Po0KFstNFG/Od//idTpkwBinDaEGj333//Vj2W++67j7333puePXuywgor8OUvf5mHHnqoyWWXWmopDjjgAH7+85/PM/2hhx6ib9++rLHGGgwZMoRHHnmE119/vXH+sccey1prrcV+++3HiSee2OS2p0yZQt++fRvvn3/++YwfP55jjjmGk08+mdNPP50zzjiDYcOGcckllzQut/zyy/Pyyy+36rEuiMFakiRV6tlnn6Vnz54sv/zyrV5n7bXX5tBDD+WOO+7g0UcfZfr06Zx88slsu+22TJgwgT/+8Y+N5yBeZZVVWHbZZXnssce45pprGD58eJPbXHTRRRtvNwT95gJ/r169GDt2LHvssQc33HBDY7ivtf766/Pwww+36vHUntqtoY4ePXrMU1OPHj2a7Y9uWP/AAw/kwgsv5PHHH+dHP/rRPOdhXnzxxYGivWWZZZZh/PjxjT9PPvlkk7W0xsJ8KILiAMNLL710nj7qq666iqeeeop+/fqx9tpr8+abb3Ldddc1zj/77LOZNGkSP/nJTxgxYkST2+3Tp0+T552+8cYbGTRoELNmzWLChAmMGjWKK664orFN5t1336VPnz4L9RiaY7CWJEmVmTZtGt/+9rc5/PDDWx3obr755sYw98wzz9CzZ0+WWWYZZsyYwSqrrALA5ZdfPs86w4cP56yzzmLGjBkMGDCg1fVttdVWXHfddcydO5dXXnmFu+66C4C33nqLGTNmsOOOOzaOjM7v2GOP5ac//Sn/+Mc/gCLQnnfeeQBsscUWXH311QBceeWVbLXVVq2uqWFbDb3eI0eObFx/5syZrLTSSsyZM4crr7yyyXWXWmop1lxzzcZR/Mzk0UcfBWDLLbecp66mLLnkksycObPx/tZbb80111zDBx98wLRp07jnnnvYdNNNm639M5/5DMOGDePSSy9tfCzXXnstjz32GM8//zzPP/88N9544zxnBoHig8URRxzB3LlzufXWWz+y3fXWW49JkybNM23OnDlccMEFHHvssbz99tuN77GG3msoWmQ22GCDZutdGPZYS5LUjVVxTMA777zDRhtt1Hi6vf3335+jjz66cf4dd9zBqquu2nj/2muvZfPNN2+8f8UVV3DUUUex2GKL0atXL6688kp69uzJcccdx4gRIzjvvPPYbrvt5tnnnnvuyRFHHNHsAXnN2WOPPbjjjjvYYIMN+NznPsdmm23G0ksvzcyZM9ltt9149913ycwmD8gbOHAg559/PnvvvXdjqNtpp+L5/vnPf85BBx3E2WefTd++ffnNb36zUHUtvvjiTJw4kU022YSll1668YDBH//4x2y22WasscYaDBgwYJ4AXOvKK6/k0EMP5Sc/+Qlz5sxh+PDhbLjhhlxwwQXss88+XHDBBeyxxx5Nrrvsssuy5ZZbssEGG/D1r3+ds846i7///e9suOGGRARnnXUWK664Yov1H3PMMVx44YUA3HPPPayyyiqNH4qgCOtPPPFEY4tKg4jghz/8IWeddRbbb7/9PPN22mknfvWrX/Gtb32rcdpFF13EiBEjWGyxxRg4cCCZyYABA9hxxx1ZZpllAPjrX//Kz372sxbr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\n",
"text/plain": [
"<Figure size 864x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"_ = mass_rebuild_results.plot.bar(figsize=(12,5), x=\"Name\",y=\"DL Savings Compared to NAR (%)\",title=\"DL Savings Compared to NAR (more is better)\", xlabel=\"\", ylabel=\"Savings in %\")"
]
},
{
"cell_type": "markdown",
"id": "49e237d1-6ed7-4e2b-bc9d-f51d9a9eed2f",
"metadata": {},
"source": [
"We can see a massive performance gain for both Casync (48.4%) and xz-compressed files (38.4%). We can also see that compression plays a massive role in terms of substitution performance: the uncompressed files are doing almost 90% worse than the plain NAR substitution."
]
},
{
"cell_type": "markdown",
"id": "2ca085b5-a768-468c-ab8a-76bde3de6818",
"metadata": {},
"source": [
"## 2. Firefox Bump\n",
"\n",
"In this scenario, we're going to simulate a Firefox update. We took the Firefox 97.0 -> 97.0.1 bump [7e23a7fb8268f16e83ef60bbd2708e1d57fd49ef](https://github.com/NixOS/nixpkgs/commit/7e23a7fb8268f16e83ef60bbd2708e1d57fd49ef) as a test example."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "318921b6-bd97-46e5-9aa4-b89e01831bb1",
"metadata": {},
"outputs": [],
"source": [
"firefox_bump_results = analyse_benchmark_results(b[\"firefoxBump\"])"
]
},
{
"cell_type": "markdown",
"id": "82f29255-e1b9-4479-b5a8-67b53970c340",
"metadata": {},
"source": [
"### NAR Substitution Performance"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "f2f00c22-16aa-46d4-adc4-7a7fa2e6431d",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAVQAAAFkCAYAAAB/6MMYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAvLElEQVR4nO3deZgU5b328e9vZmDYhgYUlUVoZN8Ug4rGDdwj0RBxy3GPW/Q1iycm6SRG62TFY1SS6FET4xKN0WjiCdo5iSu4BeLhCIqIiDoqKBEEm2VgYJjn/aNqpEVgtpp5urrvz3X1xcx0d/XdPT03T1VX1WPOOUREpPXKfAcQESkWKlQRkZioUEVEYqJCFRGJiQpVRCQmKlQRkZioUEVEYqJClSYzszvN7MdtsNyJZra0ve9byMxsppld4DuHNI8KtZnMrNrM/mVmXfN+doGZzdzmdmZmb5rZwu0sY6aZbTSzdWa20sz+bGZ9dvKYd5rZJjNbG10WmNnPzCwV65MrEmbWt6Fko9/Xhui1Xh69lt1auNzAzO7Zzs+dmQ1pbe5m5tic935YbGY37uw9tJ1lqLDbgAq1ZSqArzdym8OA3YC9zGz/7Vx/mXOuGzAE6Ab8vJHl/adzrgroDZwHHAg8l1/s8rHjgb/lfX9C9FqPA/YFvusjVMzuj94PvYAvAnsAc5tTqhI/FWrLXAtcYWY9dnKbc4C/AH+Nvt4u59xHwH8T/rE3yjm30Tn3AnAisAthuWJmZWZ2pZm9bWYfmNnvGkawZnaXmX0z+rpfNKK6NPp+iJmtikbUE81sqZl9M1rG+2Z23o6ymNmFZrYkuv8MM+ubd90vzOxdM1tjZnPN7NC86zpHI8XV0Qh+/22W29fM/mRmK8zsLTP7WlPvGzme8HXf9rVbDvydvNfazA40s+fN7CMzm29mE3f0fJvCzM6N1kzWRtnPyLvuy2b2apT972Y2MO+6o81skZnlzOxGwJryeM65zc65V4DTgBVAw++5p5k9Er2Gq6Ov+0fX/QQ4FLgxGrnfGP18h78zaRoVasv8LzATuGJ7V5pZF+Bk4PfR5XQz67iD2+4CnAQsaU4A59xa4DHCPwyAc6PLJGAvwlHvjdF1s4CJ0deHA29G/0I4kn7GbT2pwx5ACugHnA/cZGY9t5P7COBnwKlAH+Bt4L68m7xAWFy9gHuBB8ysU3Td1cDg6HIsef/hmFkZ8DAwP8pwJPANMzu2sftG9+8QPafHtpO5P/A5otfazPoBWeDHUc4rgD+ZWe9t79sU0drCL4HPRaPHzwLzouumAN8j/F33Bp4B/hBdtyvwJ+BKYFfgDeDg5jy2c24L4X/gDe+HMuAOYCAwANhA9H5wzn0/evzLnHPdnHOXRffZ2e9MmsI5p0szLkA1cBQwBsgR/nFcAMzMu82ZhKOFCqAS+Aj4Yt71M4Ga6P6O8I9uwE4e807gx9v5+TTgsejrJ4BL864bDmyOMgyOMpQBtwAXA0uj290F/Hv09UTCP7yKvOV8ABy4bQ7gt4SbIRpu1y16vPQOnsNqYJ/o6zeB4/KuuygvzwTgnW3u+13gjsbuG31/JPDENr+vdcDa6LV+AugRXfcd4O5tHuvvwDk7eA4BcM92fu4IN910jV7nqUDnbW7zP8D5ed+XRe+BgcDZwOy86wxYClzQzBxfAV7fwX3GAau3eQ9ud/nb+53p0rSLRqgt5JxbADwCZLZz9TnAH51zdc65WuDPfHq1/2vOuRSwN9AT6N+CGP2AVdHXfQlHiQ3eJizT3Z1zbxCWyjjCEcwjwHtmNpxwpDor734fOufq8r6vISzLbX3i8Zxz64APo0xEmw1ejVZhPyIc9e6ad993t8naYCDQN1oF/yi67/eA3ZtwX9j+6v4UF44YJwIj8nIMBE7Z5rEOAfqY2aHR6vA6M3slun0d0CF/wdGIGGCzc2494ar3V4D3zSxrZiPyHusXeY+zirA4+237nFzYZvnPsak+fj+YWRczuzXaBLQGeBroYWblO7pzI78zaQIVautcDVxIVCLw8WrlEcCZFn6qvJxw9f/4aNXuE5xzLxOuct5kZk3abhY9TjfCkfIz0Y/eI/yjbTCAsAD+FX0/K8rR0Tm3LPr+bMIyn9fUx83ziceLVnd3AZZF296+Q7g5oKdzrgfhaLzh+b0P7LlN1gbvAm8553rkXaqcc8c34b4QFmp2e4Gdc7MIR9kNHwC+SzhCzX+srs65ac65Z1y4OtzNOTc6uv07QHqbxQ4CtgDLosf4u3PuaMLNIIuA3+Q91sXbPFZn59zz2z6n6H2Q/xwbFW0qOYGt74dvEq6lTHDOdSfcDAJbfwdum/s39juTJlChtoJzbglwP/C1vB+fBSwmfDOPiy7DCFfhvrSDRd1FuEfAiY09pplVmtl4wg+yVhNuJ4Nwe9zlZjYoKtufEn4S3DDanAVcRjhSgXCV76vAsy7c/tZc9wLnmdk4M6uMHm+Oc64aqCIs8xVAhZldBXTPu+8fge9GH5z0j3I0+Cewxsy+E30AVW5mY2zrnhI7vK+ZDQIqnXOLdpJ7OnC0mY0D7gFOMLNjo8fpZOEHcztaW/gbMNzMzjKzDmbWK3reDzrn6sxsdzM7MfrPpZZwraDhtb0lyj06ypoys1Oi67LAaDM7ycwqCN9Pe+zkOXwsyjGS8Pe/B3B9dFUV4eabj6KcV29z138Rbmsn7/Y7+51JE6hQW++HhNvOGpwD/Jdzbnn+hfAParuf9jvnNhF+mPGDnTzOt81sLeEq3e+AucBno9VMgNuBuwkL8y1gI58sqlmEfzQNhfos0CXv+2Zxzj0R5f0T4QhrMHB6dPXfCbcZLiZcJd/IJ1dh/yP6+VvAo1HuhuVuIRxpjYuuXwncRrj6udP7ApPZzqf72+ReQfj6/cA59y7wBcJNCiuijN9iB38XzrkPCEfAFxNuW15AOIq7JLpJGeHI8D3C39PhwKXRfR8CrgHui1bBFxB+QIZzbiVwCuE28Q+BocBzO3sewGlmto5wm+2M6H7jnXPvRddPBzoTvn6z+eRuZAC/AE6O9gD4JY3/zqQJLNxcI5J8ZvZX4Ebn3E5LVaStaIQqxWQm8JTvEFK6NEIVEYmJRqgiIjFRoYqIxESFKiISExWqiEhMVKgiIjFRoYqIxESFKiISk4rm3mHu3Lm7VVRU3EZ4+joVcvurBxbU1dVdMH78+A98hxGRrZpdqBUVFbftscceI3v37r26rKxMRwW0s/r6eluxYsWo5cuX30YTTqYiIu2nJSPMMb17916jMvWjrKzM9e7dO0e4hiAiBaQlhVqmMvUrev21uUWkwCTyj7K8vHz8iBEjRg0ZMmT08OHDRwVBsPuWLS05pWfTHHDAAcOffvrpLq1dziOPPFI1adKkZk03HNdji0jba/Y21G2lM9nxcQRpUD1t8tzGblNZWVm/aNGihQDLli2rOOWUU/bK5XLlN9xww3uN3VdEpK0kcoSar1+/fnW33XZb9R133LFbfX09NTU1dvLJJ6eHDRs2auTIkaMefvjhKoDDDz98yJw5czoDjBw5ctQVV1zRB+DrX/963+uvv37XRx55pOqAAw4Yftxxx+01aNCg0SeeeOKg+vr6Tz3erbfe2mvYsGGjhg4dOvqSSy75eOqTM844Y8CYMWNGDhkyZPTll1/+8XTKDz74YPdBgwaNHj9+/PAHH3ywR8PP16xZU3bKKaekx4wZM3LkyJGj7rnnnh4A69ats89//vN7DRs2bNTkyZP32rhxo6agEEmIxBcqwKhRozbV19ezbNmyimuuuWY3gMWLFy+8995737zooovSNTU1dvDBB6978sknu61ataqsvLzczZ49uxvA7Nmzux155JFrAV599dXON91007tLlix55Z133ql87LHHPjE5XXV1dYcgCPrNnDlz8cKFC1958cUXu9599909AK6//vplCxYseHXRokWvPPfcc1Vz5szpXFNTY5dddll6xowZS1544YXXPvjgg48nePve977XZ9KkSWsWLFjw6jPPPPPalVde2X/NmjVlP//5z3fr3Llz/eLFixdeddVV7y9cuDB/NgARKWBFUahAw7S3PP/8893OPvvsDwH23XffjX379t308ssvd5o4ceLaZ599tuqxxx6rOuaYY3I1NTXla9euLVu6dGnlPvvsUwswduzY9YMHD95cXl7O6NGja954442O+Y/x7LPPdj3wwAPX9u3bt65Dhw6cdtppq2bNmtUN4K677uo1atSokaNGjRr1+uuvd5o/f36nefPmderfv3/t2LFja8vKyjjjjDM+bFjWzJkzu99www19RowYMeqQQw4ZXltba0uWLOn47LPPdjvrrLM+BJgwYcKGYcOG1bTTSygirdTqbaiFYOHChR3Ly8vp169f3Y5OmH3YYYfVnH/++V2efvrp2mOPPXbNypUrK6ZPn77r2LFjG+ZkorKy8uM7l5eXU1dX94nV7R0te9GiRR1vvPHG3efOnftq7969t0ydOjW9cePGMoAdTWTqnOPBBx9c0lDm+Zox+amIFJDEj1Dfe++9igsvvHDgeeed90FZWRmHHHLIunvuuacXwEsvvVT5/vvvd9x77703durUyfXp02fzjBkzek6aNGn9oYceuvamm27a4+CDD17X1Mc67LDD1s+ZM6fq/fffr6irq+OBBx7oNXHixHWrV68u79y5c32vXr22vPvuuxUzZ85MAYwbN27j0qVLO77yyiuVAPfdd1+vhmVNmjRpzXXXXbd7w3ba5557rjPwifwvvPBCp8WLF+sTfpGESOQItba2tmzEiBGj6urqrLy83J122mkfXn311f8C+Pa3v/3BWWedNXDYsGGjysvLufXWW6s7d+7sAA466KC1Tz/9dPeqqqr6o48+et1FF13UYdKkSU0u1IEDB26+6qqrlh1++OHDnHN25JFH5s4888yPAMaMGVMzdOjQ0QMGDKgdP378OoAuXbq4X/3qV29//vOfH9KrV6+6CRMmrHv11Vc7A0ybNu29iy66aMCIESNGOeesf//+tU899dSSK6644oPTTz990LBhw0aNHj26Jn8ELSKFrdlzSs2fP796n332WdlGeaSJ5s+fv+s+++yT9p1DRLZK/Cq/iEihUKGKiMREhSoiEhMVqohITFSoIiIxUaGKiMQkkYXacPq+oUOHjj7iiCOGrFy5srw59+/Spcu++d//8pe/3OXss88e0NpcU6dOTd9xxx09W7scEUmm1u/YH6RiPX0fQa5Zp+876aST0tdee23va665ZnmsOUREmimRI9R8Bx544Pply5Z1BHjllVcqDz300KGjR48eOX78+OEvvvhip+Yu7/bbb+85dOjQ0cOHDx+13377DQeoq6vj4osv7j9mzJiRw4YNG3XttdfuClBfX8/ZZ589YPDgwaMnTpw4ZOXKlYk88kxE4pHoAqirq+Opp56qOv/881cCXHDBBQN//etfvz127NjaJ598susll1wyYPbs2Yubs8xp06b1efTRRxcPGjRoc8OmhOnTp++aSqW2LFiw4NUNGzbY/vvvP+KEE05YM2fOnC5LliypfO21115ZunRph7Fjx44+99xzP2zsMUSkOCWyUBuO5V+2bFnHMWPG1EyZMmVNLpcre/HFF7udcsopgxtut2nTpiaftsnMHMB+++237owzzkhPnTp19RlnnLEa4PHHH+++aNGiLjNmzOgJsHbt2vKFCxd2mjVrVtWpp566qqKignQ6vfmggw5aG/dzFZHkSGShNmxD/fDDD8uPOeaYIdOmTdvt0ksvXVlVVVXXsG21QV1dHWPGjBkFcNxxx300ffr09yorK+s3btxonTp1cgCrVq2q2HXXXesA7r333neefPLJrjNmzEiNGzdu9Lx5815xztl11133ztSpU9fkL/uRRx5J6VR7ItIg0dtQd9llly2//OUv37npppt279q1q+vfv/+m22+/vSeE2zf/8Y9/dK6oqGDRokULFy1atHD69OnvAUyYMGHtLbfc0gvC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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"gen_perf_pie(firefox_bump_results, \"NAR\")"
]
},
{
"cell_type": "markdown",
"id": "37f5e393-9b94-43f3-8b85-ff51452dfbac",
"metadata": {},
"source": [
"### Casync Substitution Performance"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "faaee019-4783-4030-9fee-a4b217311307",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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ZK/CwsJRgwcPLunfv//QQYMGlQRBsFNNTc22F2yifffdd9CMGTPab+96nnrqqU7jxo3r7+O+m5vmwEViqLi0bFQm11c+afycbd2mTZs2qaVLly4GWLlyZdGJJ564WzKZLLz55ps/ymQWaTiNwEWk0Xr37l193333lT/44IM9UqkUGzdutBNOOKF44MCBJUOGDCl58sknOwEcfPDB/WfPnt0OYMiQISVXXnllT4Cf/OQnvW666aYdn3rqqU777rvvoKOOOmq3fv36DT3mmGP6pVKpb93f3Xff3W3gwIElAwYMGHrRRRf1rr184sSJfYcNGzakf//+Q6+44opetZdPmTKlc79+/YaOGjVq0JQpU7rUXr5u3bqCE088sXjYsGFDhgwZUvLwww93AdiwYYN973vf223gwIEl48eP323z5s2xOLanClxEmqSkpKQylUqxcuXKouuvv74HwNtvv734kUceee/8888v3rhxo+2///4bnn/++Y6fffZZQWFhoZs1a1ZHgFmzZnU89NBD1wMsWbKk3e23375i2bJliz744IM2zz77bMf0+ykvL28VBEHvadOmvb148eJFc+fO7fDnP/+5C8BNN920cuHChUuWLl26aObMmZ1mz57dbuPGjXbJJZcUT506ddlrr7321urVq1vVruvqq6/uOW7cuHULFy5c8uKLL771y1/+ss+6desK/vjHP/Zo165d6u2331587bXXrlq8eHGHFnsit4MKXESarPZ4Ai+//HLHM84441OAPffcc3OvXr0qFyxY0Hbs2LHrX3rppU7PPvtspyOOOCK5cePGwvXr1xd8+OGHbUaMGFEBMHz48C933333qsLCQoYOHbrx3XffbZ1+Hy+99FKH/fbbb32vXr2qW7Vqxcknn/zZ9OnTOwL86U9/6lZSUjKkpKSk5J133mk7f/78tvPmzWvbp0+fiuHDh1cUFBQwceLET2vXNW3atM4333xzz8GDB5cccMABgyoqKmzZsmWtX3rppY6nn376pwCjR4/eNHDgwI0t9BRuF82Bi0iTLF68uHVhYSG9e/euru/AMAcddNDGc845p/2MGTMqjjzyyHVr164tmjx58o7Dhw//6mDebdq0+WrhwsJCqqurvzF9Ud+6ly5d2vq2227bac6cOUu6d+9eM2HChOLNmzcXAJhteQbEOceUKVOW1f7xSFffMtlMI3ARabSPPvqo6Lzzztv1rLPOWl1QUMABBxyw4eGHH+4G8Oabb7ZZtWpV6z322GNz27ZtXc+ePaumTp3addy4cV8eeOCB62+//fad999//w0Nva+DDjroy9mzZ3datWpVUXV1NY8//ni3sWPHbvj8888L27Vrl+rWrVvNihUriqZNm5YAGDly5OYPP/yw9aJFi9oA/PWvf+1Wu65x48atu/HGG3eqnWefOXNmO+Ab+V977bW2b7/9dtZvgQIagYtIA1VUVBQMHjy4pLq62goLC93JJ5/86XXXXfcJwFVXXbX69NNP33XgwIElhYWF3H333eXt2rVzAGPGjFk/Y8aMzp06dUodfvjhG84///xW48aNa3CB77rrrlXXXnvtyoMPPnigc84OPfTQ5GmnnfYFwLBhwzYOGDBgaN++fStGjRq1AaB9+/bu1ltvXf69732vf7du3apHjx69YcmSJe0AJk2a9NH555/fd/DgwSXOOevTp0/FCy+8sOzKK69cfcopp/QbOHBgydChQzemv0PIZjompkgMzJ8/v3zEiBFrfefId/Pnz99xxIgRxb5z1NIUiohITKnARURiSgUuIhJTKnARkZhSgYuIxJQKXEQkplTgItIgtbuTHTBgwNBDDjmk/9q1awsbs3z79u33TP/5lltu2eGMM87ou725JkyYUPzggw923d71xJG+yCMSR0Eio7uTJUg2aneyxx9/fPENN9zQ/frrr/84ozmkUTQCF5FG22+//b5cuXJla4BFixa1OfDAAwcMHTp0yKhRowbNnTu3bWPX98ADD3QdMGDA0EGDBpXsvffegwCqq6u54IIL+gwbNmzIwIEDS2644YYdAVKpFGeccUbf3XfffejYsWP7r127Nm8Honn7wEWkaaqrq3nhhRc6nXPOOWsBzj333F3vueee5cOHD694/vnnO1x00UV9Z82a9XZj1jlp0qSezzzzzNv9+vWrqp2amTx58o6JRKJm4cKFSzZt2mT77LPP4O9///vrZs+e3X7ZsmVt3nrrrUUffvhhq+HDhw8988wzP93WfeQiFbiINEjtvlBWrlzZetiwYRuPPfbYdclksmDu3LkdTzzxxN1rb1dZWdng3fqZmQPYe++9N0ycOLF4woQJn0+cOPFzgOeee67z0qVL20+dOrUrwPr16wsXL17cdvr06Z1OOumkz4qKiiguLq4a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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"gen_perf_pie(firefox_bump_results, \"Casync\")"
]
},
{
"cell_type": "markdown",
"id": "dcd5e58c-64da-4a5e-846a-3c2a91d267a5",
"metadata": {},
"source": [
"### File Substitution Performance"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "0cd9d4c5-9258-4b7c-8ab3-78286ee1f365",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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N9xww2urVq167tVXX+3zwAMPvOdEdfX19b2CIBj68MMPv7B8+fLnFi9eXP2LX/yiP8A111yzZtmyZStWrlz53OOPP167aNGiqoaGBvv85z+fnDdv3qqnnnrq+TfffPM/J3r75je/OXjGjBkbly1btuLRRx99/tvf/vawjRs3lv3oRz/araqqquWFF15Yfumll76+fPny6h57I0WkW4qiUIHW0zvwxBNP1Jx99tlvAey3335NQ4YM2fLss89WTp8+fdNjjz1W+8ADD9QeffTR6YaGhvJNmzaVrV69us/kyZObASZNmvTu3nvvvbW8vJwJEyY0vPTSS72zX+Oxxx6rPuiggzYNGTIk06tXL04//fQNjzzySA3AnXfeOWD8+PHjxo8fP/7FF1+sXLp0aeWSJUsqhw0b1jxp0qTmsrIyZs+e/Vbrsh5++OF+11577eCxY8eOP/TQQ8c0NzfbqlWrej/22GM1Z5111lsAU6dObRw9enRDD72FItJN3d6GWgiWL1/eu7y8nKFDh2bamjD78MMPbzj33HP7LliwoPmYY47ZuH79+oq5c+cOnDRp0rutj+nTp89/nlxeXk4mk3nP6nZby165cmXv66+/fvenn356xaBBg7bNmjUr2dTUVAbw3hN1vndZ991336rWMs/W1nNEpLDFfoS6du3aivPPP3/4pz71qTfLyso49NBDN991110DAJ555pk+r7/+eu999tmnqbKy0g0ePHjrvHnzdpkxY8a7hx122KYbbrjhQ4cccsjmjr7W4Ycf/u6iRYtqX3/99YpMJsO99947YPr06Zvffvvt8qqqqpYBAwZse+211yoefvjhBMC+++7btHr16t7PPfdcH4B77rlnQOuyZsyYsfHqq6/evXU77eOPP14FvCf/U089VfnCCy/oE36RmIjlCLW5ubls7Nix4zOZjJWXl7vTTz/9re985zv/Bvj617/+5llnnTV89OjR48vLy7n55pvrq6qqHMDBBx+8acGCBf1qa2tbjjrqqM0XXHBBrxkzZnS4UIcPH7710ksvXTNt2rTRzjk78sgj05/4xCfeAZg4cWLDqFGjJuy5557NU6ZM2QzQt29f9+Mf//iV448/fuSAAQMyU6dO3bxixYoqgDlz5qy94IIL9hw7dux455wNGzas+aGHHlp1ySWXvHnGGWeMGD169PgJEyY0ZI+gRaSwdfqcUkuXLq2fPHny+jzlkQ5aunTpwMmTJyd95xCR7WK/yi8iUihUqCIiOaJCFRHJERWqiEiOqFBFRHJEhSoikiOxLNTW6ftGjRo14Ygjjhi5fv368s48v2/fvvtlf33dddftevbZZ+/Z3VyzZs1K3n777bt0dzkiEk/d37E/SOR0+j6CdKem7/voRz+avOqqqwZdeeWVb+Q0h4hIJ8VyhJrtoIMOenfNmjW9AZ577rk+hx122KgJEyaMmzJlypjFixdXdnZ5t9122y6jRo2aMGbMmPH777//GIBMJsOFF144bOLEieNGjx49/qqrrhoI0NLSwtlnn73n3nvvPWH69Okj169fH8sjz0QkN2JdAJlMhoceeqj23HPPXQ9w3nnnDb/llltemTRpUvP8+fOrL7rooj0XLlz4QmeWOWfOnMF//etfXxgxYsTW1k0Jc+fOHZhIJLYtW7ZsRWNjox1wwAFjTzjhhI2LFi3qu2rVqj7PP//8c6tXr+41adKkCeecc85b7b2GiBSnWBZq67H8a9as6T1x4sSGk08+eWM6nS5bvHhxzWmnnbZ36+O2bNnS4WmbzMwB7L///ptnz56dnDVr1tuzZ89+G+Bvf/tbv5UrV/adN2/eLgCbNm0qX758eeUjjzxS+7GPfWxDRUUFyWRy68EHH7wp19+riMRHLAu1dRvqW2+9VX700UePnDNnzm6f/exn19fW1mZat622ymQyTJw4cTzAscce+87cuXPX9unTp6WpqckqKysdwIYNGyoGDhyYAbj77rtfnT9/fvW8efMS++6774QlS5Y855yzq6+++tVZs2ZtzF72/fffn9BUeyLSKtbbUHfddddt11133as33HDD7tXV1W7YsGFbbrvttl0g3L755JNPVlVUVLBy5crlK1euXD537ty1AFOnTt100003DYDwlCO/+93vdvnwhz+8CcLtsEccccS7c+fOXbvLLrtkXn755d5HHXVU+sYbbxzU3NxsEE4LuHHjxrJp06ZtuvfeewdkMhleeeWVXgsXLqz19V6IiH+xHKFmO+SQQxrHjRvXeOutt+7yq1/96uXzzz9/+JVXXjk4k8nYKaecsuHggw9u3PE5N95442uf/vSnh9900027O+c444wz3jruuOM2A1x88cXD6uvr+zjn7NBDD9140EEHNU6dOrWxvr6+z6RJk8Y552zAgAFb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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"gen_perf_pie(firefox_bump_results, \"File\")"
]
},
{
"cell_type": "markdown",
"id": "6435d681-1db1-40f4-88b9-ccd687397793",
"metadata": {},
"source": [
"### Compressed File Substitution Performance"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "b8dd151d-a339-44bc-9a11-cbb6805f1e97",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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ww4iIh5o2EFExAOVr4iIBypfEREPVL4iIh6ofEVEPFD5ioh4oPIVEfGg0RtZvPXWW/uXlZXdT7hTDJV37qWBuTU1NZcPHjx4he8wIrJnGl2+ZWVl9x944IH9OnXqtKakpERbaORYOp22lStXln/66af3A2c0eAcRyUt7Muc6oFOnTutUvH6UlJS4Tp06pdh+d3wiEjN7Ur4lKl6/otdfQz4iMRbLL3Bpaengvn37lvfs2bN/nz59yoMgOKC2trbhO+6hoUOH9pk8eXLrvZ3O008/3W7UqFE9fTy2iOSXvd6rWbKicnDDt9p9VeNGv9XQbVq0aJFeuHDhfIClS5eWnXvuuYemUqnSO+64Y28OISQikjOxnPPN1LVr15r777+/6o9//OP+6XSaTZs22TnnnJPs3bt3eb9+/cqfeuqpdgAjRozoOWPGjFYA/fr1K7/uuus6A1xzzTVdbr/99o5PP/10u6FDh/Y5+eSTD+3evXv/M844o3s6nf7K4913330devfuXd6rV6/+V111Vd0BAhk7duzBAwYM6NezZ8/+11577RcH3XziiSf26d69e//Bgwf3eeKJJ/atu3zdunUl5557bnLAgAH9+vXrV/7QQw/tC7BhwwY77bTTDu3du3f56NGjD92yZUvBHLNKRL4U+/IFKC8v35pOp1m6dGnZLbfcsj/AokWL5j/88MPvX3nllclNmzbZMcccs+Hll19uu3r16pLS0lI3ffr0tgDTp09ve8IJJ6wHWLBgQau777774yVLlsz76KOPWrzwwgvbHSW3qqqqWRAEXSdOnLho/vz582bOnNnmwQcf3Bfg9ttvXzp37twFCxcunDdt2rR2M2bMaLVp0ya7+uqrkxMmTFjyxhtvvLtixYovjjJ7ww03dB41atS6uXPnLpgyZcq7P/vZz7qtW7eu5Le//e3+rVq1Si9atGj+jTfeuHz+/PltcvZCikjOFET5AnXHiOLVV19te/HFF38OcMQRR2zp0qXL1nfeeaflyJEj10+dOrXdCy+80O6kk05Kbdq0qXT9+vUln3zySYtBgwZVAwwcOHBjjx49tpWWltK/f/9N7733XubB/Jg6dWqbo446an2XLl1qmjVrxvnnn7960qRJbQH+/Oc/dygvL+9XXl5evnjx4pazZ89uOWvWrJbdunWrHjhwYHVJSQljx4794pDiEydO3OeOO+7o3Ldv3/Lhw4f3qa6utiVLljSfOnVq24suuuhzgGHDhm3u3bv3phy9hCKSQwVxJIv58+c3Ly0tpWvXrjU72zn8cccdt+myyy5rPXny5OpvfvOb61atWlU2fvz4jgMHDtxYd5sWLVp8cefS0lJqamq2+8m/s2kvXLiw+V133XXAW2+9taBTp061Y8aMSW7ZsqUEwGzHowbOOZ544okldcWfaWf3EZHCEfs532XLlpVdccUVh1x66aUrSkpKGD58+IaHHnqoA8CcOXNaLF++vPlhhx22pWXLlq5z587bJkyY0H7UqFEbjz322PV33333gcccc8yG3X2s4447buOMGTPaLV++vKympobHH3+8w8iRIzesWbOmtFWrVukOHTrUfvzxx2UTJ05MABx++OFbPvnkk+bz5s1rAfDoo492qJvWqFGj1t12220H1I0rT5s2rRWwXf433nij5aJFi7Smg0gBiuWcb3V1dUnfvn3La2pqrLS01J1//vmf33TTTZ8BXH/99SsuuuiiQ3r37l1eWlrKfffdV9WqVSsHcPTRR6+fPHnyPu3atUufeOKJG6688spmo0aN2u3yPeSQQ7bdeOONS0eMGNHbOWcnnHBC6sILL1wLMGDAgE29evXqf/DBB1cPHjx4A0Dr1q3d7373uw9PO+20nh06dKgZNmzYhgULFrQCGDdu3LIrr7zy4L59+5Y756xbt27Vr7zyypLrrrtuxQUXXNC9d+/e5f3799+UOWcuIoWj0cdwmz17dtWgQYNWNVEe2U2zZ8/uOGjQoKTvHCKyZ2I/7CAiEkcqXxERD1S+IiIeqHxFRDxQ+YqIeKDyFRHxIJblW7dLyV69evU//vjje65ataq0Mfdv3br1EZl/33nnnftdfPHFB+9trjFjxiT/+Mc/tt/b6YhI4dv7jSyCRFZ3KUmQatQuJc8+++zkrbfe2umWW275NKs5RESaUCznfDMdddRRG5cuXdocYN68eS2OPfbYXv379+83ePDgPjNnzmzZ2Ok98MAD7Xv16tW/T58+5UceeWQfgJqaGr7//e93GzBgQL/evXuX33rrrR0B0uk0F1988cE9evToP3LkyJ6rVq2K5RaDIpJ7sS6LmpoaXnnllXaXXXbZKoDLL7/8kD/84Q8fDhw4sPrll19uc9VVVx08ffr0RY2Z5rhx4zo///zzi7p3776tbjhj/PjxHROJRO3cuXMXbN682YYMGdL39NNPXzdjxozWS5YsafHuu+/O++STT5oNHDiw/yWXXPJ5Q48hIhLL8q3bt8PSpUubDxgwYNOZZ565LpVKlcycObPtueee26Pudlu3bt3t3YOZmQM48sgjN4wdOzY5ZsyYNWPHjl0D8OKLL+6zcOHC1hMmTGgPsH79+tL58+e3nDRpUrvzzjtvdVlZGclkctvRRx+9PtvPVUQKUyzLt27M9/PPPy896aSTeo4bN27/H/7wh6vatWtXUzcWXKempoYBAwaUA5x88slrx48fv6xFixbpLVu2WMuWLR3A6tWryzp27FgD8PDDD3/08ssvt5kwYULi8MMP7z9r1qx5zjm77bbbPhozZsy6zGk//fTTCe3+UUT2RKzHfPfbb7/aO++886O77777gDZt2rhu3bptfeCBB9pDOB772muvtSorK2PhwoXzFy5cOH/8+PHLAIYNG7b+3nvv7QDhYXuefPLJ9t/4xjfWQzhufPzxx28cP378svbt29e8//77zU888cTUPffc06m6utog3FXlunXrSkaMGLH+8ccf71BTU8OHH37YbPr06e18vRYiEi+xnPPNdMwxx2zu16/f5vvvv7/9I4888v4VV1xxyC233NK5pqbGzjrrrNVHH3305vr3ueeeez7+3ve+d8i99957gHOOCy644PNTTjllA8C1117braqqqoVzzoYPH77uqKOO2jxs2LDNVVVVLQYOHNjPOWcdOnTY9swzz7x30UUXrX3ppZf26dOnT//u3btvGTp0qIYdRGS3aJeSMRXbXUoGiTLgAKBz9O9+0alDdNoHKCX8VbarUy2wFli9k9OaL84Hqa8eCVXEs9jP+UoeChItgD5AP6A8OvUEugAdye1w1zaCxAfAImBx9G/daSlBqnFzHyJZovKVPRfOxQ4EBrB90R5KOPeaD5oBvaNTfZsIEksIi3ge8DrwOkFKv+ykyal8ZfeFc7RDgRHAccDXgTgf2r41cFh0OueLS4PEe8CMMdU3vfyW6/MmMKdq3GjNIUtW7Un5ptPptJWUlOjD6Ek6nTag6ccxg0RrwoKtK9uhQKO3GoyhHs5x0FzX/WzC57smWVE5DZgMTATeVBnL3tqT8p27cuXK8k6dOqVUwLmXTqdt5cqVCWBukzxAkDiEcC7wLMKybdYkj5PnNtBqcTXN+0d/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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"gen_perf_pie(firefox_bump_results, \"Compressed File\")"
]
},
{
"cell_type": "markdown",
"id": "07039c9b-6a9a-4901-9c49-ee4095d2a8ac",
"metadata": {},
"source": [
"### Comparing the Substitution Techniques"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "3a1b8d72-b37f-4425-9fe4-c5346cf9cf8c",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Closure Size (MB)</th>\n",
" <th>Downloaded Size (MB)</th>\n",
" <th>Re-used Size (MB)</th>\n",
" <th>DL Savings Compared to NAR (%)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>NAR</td>\n",
" <td>219.351904</td>\n",
" <td>56.431531</td>\n",
" <td>162.920373</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Casync</td>\n",
" <td>342.924949</td>\n",
" <td>55.870973</td>\n",
" <td>287.053976</td>\n",
" <td>0.993342</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>File</td>\n",
" <td>946.853440</td>\n",
" <td>249.259020</td>\n",
" <td>723.274748</td>\n",
" <td>-341.701675</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Compressed File</td>\n",
" <td>260.424006</td>\n",
" <td>55.829510</td>\n",
" <td>204.594495</td>\n",
" <td>1.066817</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Closure Size (MB) Downloaded Size (MB) \\\n",
"0 NAR 219.351904 56.431531 \n",
"1 Casync 342.924949 55.870973 \n",
"2 File 946.853440 249.259020 \n",
"3 Compressed File 260.424006 55.829510 \n",
"\n",
" Re-used Size (MB) DL Savings Compared to NAR (%) \n",
"0 162.920373 0.000000 \n",
"1 287.053976 0.993342 \n",
"2 723.274748 -341.701675 \n",
"3 204.594495 1.066817 "
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"firefox_bump_results"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "1e1eb388-b4ab-400a-90a9-f46bfe4f4541",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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yr333svb3/52LrnkkjddODd16lS++tWvkpnst99+fO1rXwPg+OOP58477+TVV1/l/e9/f2u4v+aaazj55JMZOnQoO+ywQ+tyXn75ZU488UTuueceFi9ezOTJkznwwAN59dVXOfLII7nvvvvYcsstefXVV9/0ml988UUWL17M2muvDcCqq67K5ptvDsDkyZNZY401OOyww9h339bL57jnnnt49NFHWW211TjuuOOYPXs2AOeccw4777zzm5Y/c+bMpQLzhAkTuPXWW1m0aBELFy7kkUceYezYse3uk5deeonVV1+dAQMGAHDAAQcwYcKE3h+oI2JlijB9aWb+HCAzn6kZ/33gqrJ3DrBBzewjgKfqWZ8kSVK9bLTRRrz++uvMnTuXSy65BCgC5AMPPMBee+3FQw89xK677sqtt97KqFGjGDhwILfffjsAt912Gx/60Id4+umnueuuu5g1axbrrbceO++8M7fffju77LJL63qeeuopPve5zzFjxgzWXHNN9tprL37xi19w0EEHcdppp7HWWmuxZMkS9thjD2bOnMlmm23GMcccw4033sgmm2zCwQcf3Lqs0047jd13350LL7yQ559/nvHjx7Pnnnty/vnns9pqqzFz5kxmzpy5VAhvsdZaa3HAAQcwcuRI9thjD/bff38OPfRQVlrpjRbG6623XutZ/O985zvcfPPNjBw5ksMOO4xPfvKT7LLLLsyePZu9996b+++/f6nlT58+nW222WapYRHBnnvuybXXXsuCBQs44IADeOyxx5aa5vDDD2fVVVfl4Ycf5pxzzmkN1GuuuSYLFy5k/vz5rR8CVlQ97/IRwA+A+zPz7Jrh69ZM9j7g3rL7SuCQiFg1IkYDmwJ31Ks+SZKkesssvky/7bbbmDRpEgBbbLEFI0eO5KGHHmLChAnccsst3Hbbbey333689NJLvPLKKzz++OOtZ3fHjx/PiBEjWGmllRg7dmxrM4oWd955JxMnTmTYsGEMHDiQww8/nFtuuQWAadOmscMOO7D99tsza9Ys7rvvPh544AFGjx7NpptuSkTwoQ99qHVZ1113HWeccQZjx45l4sSJvPbaa8yePZtbbrmldboxY8YwZsyYdl/vBRdcwA033MD48eM588wzOeqoo9qd7vbbb+eCCy7gwgsvBOD666/nhBNOYOzYsRxwwAG88MILvPjii0vN8/TTTzNs2LA3LeuQQw7hsssu47LLLuPQQw990/hLL72UmTNnMnv2bM4880z+9re/tY4bPnw4Tz1V/fxtPc9Q7wxMAu6JiLvLYV8EDo2IsRTNOR4HPgaQmbMiYhpwH8UdQj7uHT4kSVJf9eijjzJgwACGDx/eGqzb2nHHHZk+fTobbbQR7373u3n22Wf5/ve/z9vf/vbWaVZdddXW7gEDBrB48eKlltHRsh977DHOPPNM7rzzTtZcc02OOOKI1h8s6ehey5nJ5Zdf3hrma3X1/szbbrst2267LZMmTWL06NFcdNFFS41/+umnOfroo7nyyitZY401AHj99df5wx/+wODBgztc7uDBg9v9wZXx48dz7733MnjwYDbbbLMO5x82bBg77LADf/rTnxg5ciRQ/CBQZ+vsqroF6sy8jfbbRV/dyTynAafVqyZJktQcGt1mfN68eRx33HGccMIJRAS77rorl156KbvvvjsPPfQQs2fPZvPNN2eVVVZhgw02YNq0aZxyyinMmzePz3zmM3zmM5/p8rp22mknTjrpJJ599lnWXHNNpk6dyoknnsgLL7zA6quvzlvf+laeeeYZfvOb3zBx4kS22GILHnvsMf7617+y8cYbM3Xq1NZl7b333px77rmce+65RAR33XUX22+/fWv9u+22G/feey8zZ858Ux0vvfQS06dPZ+LEiQDcfffdrcG1xaJFi/jgBz/I1772taXC71577cW3v/1t/uM//qN13rZtobfcckvOOuusdrfB6aefzqBBgzrdTq+88gp33XUXn/3sZ4Hiw8Pf//53Ro0a1el8XdEjd/mQJEnq71599VXGjh3LokWLGDhwIJMmTeJTn/oUAP/+7//Occcdx7bbbsvAgQO56KKLWs88T5gwgRtuuIHVVluNCRMmMGfOHCZMmNDl9a677rqcfvrp7LbbbmQm++67LwceeCAA22+/PVtvvTUbbbRR60V+gwYNYsqUKey3334MHTqUXXbZhXvvLVrgnnLKKZx88smMGTOGzGTUqFFcddVVHH/88Rx55JGMGTOGsWPHMn78m+9snJl8/etf52Mf+xiDBw9m9dVXf9PZ6d///vfceeednHrqqZx66qkAXH311XzrW9/i4x//OGPGjGHx4sXsuuuunHfeeUvNu8UWW7BgwQJefPFFhgwZstS497znPR1un8MPP5zBgwez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\n",
"text/plain": [
"<Figure size 864x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"_ = firefox_bump_results.plot.bar(figsize=(12,5), x=\"Name\",y=\"Downloaded Size (MB)\",title=\"Volume to Download for the Firefox Version Bump (less is better)\", xlabel=\"\", ylabel=\"Size in MB\")"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "d3886df5-9aaf-4146-8889-5c63c825e916",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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gRswbEvz4e+IJEkfjU4buCVJkqTFoVOO4Z5Xn+Nu/kj39/wZu8x3na5du9K/f39mz55Nt27dGDZsGEcddRRdunThrrvu4uyzz2b06NHNbv/ggw9y5JFHMmvWLGbNmsU+++zDySefvMC13nTTTTz22GMcd9xxC7xta916662ceOKJvPnmm2Qmu+66K2effXZlx/uoLbPMMrzxxhtztb322muMHDmSb3zjGwu0r4jgmGOO4ZxzzgHg7LPP5o033pjrZ7fhhhvSt29frrjiisa2gw8+mLvvvpvll1+ezOSnP/0p22+/fZPHOOqoo9hrr73YZptt2H///ZkwYQK77rorP/7xjwE49dRTGTBgAHvssQcAo0eP5qGHHuJHP/rRAj0XSZLUOvZw10mPHj0YN24ckyZN4vbbb+eWW25ZoMAzbNgwLrroIsaNG8fEiRMZMmTIQtWx++67Vxq2J06cyOGHH84f/vAHHn/8cSZOnMhaa61V2fFa67333luk7V977TV+9atfLfB2Sy65JKNGjeK///1vk8sff/xx5syZwz333MObb74517KzzjqLcePGce6553LooYc2uf0rr7zCgw8+yDbbbMP48eMBGD9+PPfeey8zZsxg6tSpjBkzpjFsA+yyyy7cdNNNvPXWWwv8fCRJ0vwZuNuAlVZaiYsuuohf/OIXZGartnn55ZdZddVVgaK3vG/fvgCMGTOGLbfcks985jNsueWWPPnkkwBsttlmTJo0qXH7bbfdlocffphLL72Uww8/HCh6UY844gi23HJL1lprLa699loA5syZwze+8Q022GADdt11V3beeefGZccddxx9+/ZlwIABfOc73/lQnWeeeSYnnHAC6623HgDdunVr7BV+4YUX2H777RkwYADbb789//znPxvrOOyww9huu+1Ya621uPvuuznkkENYf/31Ofjggxv3vcwyy/Dtb3+bjTbaiO23355p06YBcPHFF7PJJpuw4YYbsvfeezcGyYMPPphjjjmG7bbbju9973s888wz7LTTTmy88cZ89rOf5YknngDgueeeY4sttmCTTTbhxBNPbPL1P+6443jmmWcYOHAgxx57LJnJscceS79+/ejfvz9XXXVVk9t169aN4cOH87Of/azJ5SNHjuTAAw/kC1/4AjfddFOT62yxxRb861//anLZtddey0477QTAEksswdtvv82cOXN499136dq1KyeddBKnnHLKXNtEBNtuu22L36hIkqSFZ+BuI9Zaay3mzJnDyy+/3Kr1jz76aD796U/zpS99iQsvvLBxNon11luPe+65h3/84x+ccsopfP/73wdg6NChXH311QBMnTqVl156iY033vhD+506dSr33Xcfo0ePbuz5HjVqFM8//zwTJkzgN7/5DQ888ABQ9KZef/31TJo0ifHjx/ODH/zgQ/ubOHFik8cBOPzwwznooIMYP348+++/P0cccUTjsldffZW//OUv/OxnP2O33Xbj6KOPZtKkSUyYMIFx48YB8Oabb7LRRhvxyCOP8LnPfa7xG4K99tqLhx56iEcffZT111+fSy65pHG/Tz31FHfccQfnnHMOw4cP5+c//zkPP/wwZ599duMHgSOPPJLDDjuMhx56iFVWWaXJ2s844wzWXnttxo0bx1lnncWoUaMYN24cjz76KHfccQfHHnssU6dObXLbb37zm4wYMYIZM2Z8aNlVV13FPvvsw7777jvXkJJaf/rTn9hzzz2bXHb//fc3vt7rr78+q6++OhtttBFDhgxh8uTJZCaf+cxnPrTdoEGDuPfee5vcpyRJWjQG7jaktb3bACeddBJjx47lC1/4AiNHjmzs1ZwxYwaDBw+mX79+jSEVYMiQIVxzzTUAXH311QwePLjJ/e6555506dKFvn378p///AeA++67j8GDB9OlSxdWWWUVtttuOwCWW245unfvzle/+lVGjRrFUksttUDP94EHHmC//fYD4MADD+S+++5rXLbbbrsREfTv35+VV16Z/v3706VLFzbYYAOef/55ALp06cI+++wDwAEHHNC4/cSJE/nsZz9L//79GTFixFw9+4MHD6Zr16688cYb/O1vf2Pw4MEMHDiQr3/9640B+f7772ffffdtrKs17rvvPvbdd1+6du3KyiuvzOc+9zkeeuihJtddbrnlOOiggzj//PPnan/ooYfo2bMna6yxBttvvz2PPPIIr776auPyY489lrXWWosDDjig8YPUvKZOnUrPnj0bH5977rmMGzeOb3/725x44omccsopnH766QwZMoSLL764cb2VVlqJl156qVXPVZIkLRgDdxvx7LPP0rVrV1ZaaaVWb7P22mtz2GGHceedd/Loo48yffp0TjzxRLbbbjsmTpzIH//4x8ae7169erHiiisyfvx4rrrqKoYOHdrkPpdccsnG+w0fAJr7INCtWzfGjBnD3nvvzQ033NAY+mttsMEGPPzww616PrXT0DXU0aVLl7lq6tKlS7Pjrxu2P/jgg/nFL37BhAkT+OEPfzjXXNJLL700UAyTWWGFFRg3blzj7fHHH2+yltZYkA9LUJzYeMkll8w1TvuKK67giSeeoE+fPqy99tq8/vrrXHfddY3LzzrrLCZPnsxpp53GsGHDmtxvjx49mpw7+8Ybb2TQoEG8+eabTJw4kauvvprLL7+8cbjNO++8Q48ePRboOUiSpNZxlpI2YNq0aRx66KEcfvjhrQ56N998MzvvvDMRwdNPP03Xrl1ZYYUVmDFjBr169QLg0ksvnWuboUOHcuaZZzJjxgz69+/f6vq23nprfv/73zNs2DCmTZvGXXfdxX777ccbb7zBW2+9xc4778zmm2/Opz71qQ9te+yxx7LXXnux9dZbs+666zJnzhzOPfdcjjnmGLbcckuuvPJKDjzwQEaMGMHWW2/d6pqgCM3XXnstQ4cOZeTIkY3bz5w5k1VXXZXZs2czYsSIxtej1nLLLceaa67JNddcw+DBg8lMxo8fz4YbbshWW23FlVdeyQEHHMCIESOaPPayyy7LzJkzGx9vs802XHjhhQwbNoxXXnmFe+65h7POOqvZ2j/+8Y8zZMgQLrnkEg455BDmzJnDNddcw/jx4xvr/etf/8ppp53GV7/61cbtunTpwpFHHsnvf/97brvtNnbccce59rv++uszefJktt1228a22bNnc9555zF69GiefvrpxvdYw9jupZZaiqeeeop+/frN5xWX2pbWzAglSW2BgZv6/Kf99ttvM3DgwMZpAQ888ECOOeaYxuV33nknvXv3bnx8zTXXsMUWWzQ+vvzyyzn66KNZaqml6NatGyNGjKBr165897vfZdiwYfz0pz/l85///FzH/PKXv8yRRx7Z7ImAzdl7772588476devH+uuuy6bbbYZyy+/PDNnzmSPPfbgnXfeITObPBFwwIABnHvuuey777689dZbRAS77FK83ueffz6HHHIIZ511Fj179uR3v/vdAtW19NJLM2nSJDbeeGOWX375xhMVTz31VDbbbDPWWGMN+vfvP1cwrjVixAgOO+wwTjvtNGbPns3QoUPZcMMNOe+889hvv/0477zz2HvvvZvcdsUVV2Sr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\n",
"text/plain": [
"<Figure size 864x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"_ = firefox_bump_results.plot.bar(figsize=(12,5), x=\"Name\",y=\"DL Savings Compared to NAR (%)\",title=\"DL Savings Compared to NAR (more is better)\", xlabel=\"\", ylabel=\"Savings in %\")"
]
},
{
"cell_type": "markdown",
"id": "76dc2641-3a15-48d2-9334-f4e3c2539f1e",
"metadata": {},
"source": [
"As expected, we don't see any gains (~1%) here."
]
},
{
"cell_type": "markdown",
"id": "6eb4bd07-0430-4e0e-813a-30fcb8a2e375",
"metadata": {},
"source": [
"## 3. Unstable to Stable Channel Jump\n",
"\n",
"In this scenario, we're going to simulate a stable -> unstable jump for the same NixOS machine configuration we used in the mass rebuild simulation."
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "2a0cb128-24bf-4714-ab8d-aab8f6cfd291",
"metadata": {},
"outputs": [],
"source": [
"channel_jump_results = analyse_benchmark_results(b[\"channelJump\"])"
]
},
{
"cell_type": "markdown",
"id": "6a5e35af-c62d-4e1b-8732-bfc72c232707",
"metadata": {},
"source": [
"### NAR Substitution Performance"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "203c74aa-28b8-4c3c-81e1-1f07595648bf",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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zx49egz8zGc+06Ouru5f7u/ee+9t17dv3+o+ffoMvOaaa3YfFnv8+PHdBg0aNKB3794Dr7/++s715z/22GOH9ejRY+CwYcP6PfbYY4fXn79x48bYuHHj4oMGDRowYMCA6oceeuhwgM2bN9unP/3pnn379q1OJBI9t2/fXrCHJ1aZiEhJqa6u3llXV8eKFSsqb7nllo4AixYtWvDwww8vveqqq+Jbt261k08+efOUKVNarV27NlZRUeFmzJjRCmDGjBmtTjvttE0Ab7zxRvO77rrr3cWLF89/5513qp5++ulWmfcTBEGTCRMmdJk6deqiBQsWzJ89e3bLBx988HCA2267bcW8efPeWLhw4fwXXnih9cyZM5tv3brVrrvuuvikSZMWv/LKK29++OGHTeq39f3vf/+oMWPGbJw3b94bzz333Js//OEPu27cuDH2k5/8pGPz5s3rFi1atOCmm256b8GCBZlHSy0oKhMRKTn1x2l68cUXW1166aVrAI499tjtnTt33vn66683Gz169Kbnn3++9dNPP936zDPP3LB169aKTZs2xZYvX141ZMiQHQCDBw/e0qtXr10VFRUMHDhw65IlS5pm3sfzzz/fcsSIEZs6d+5c06RJEy644IK106ZNawXwm9/8pl11dfWA6urq6rfeeqvZ3Llzm82ZM6dZ165ddwwePHhHLBZj/Pjxa+q3NXXq1MNuv/32o/r37189cuTIfjt27LDFixc3ff7551tdcsklawCGDx++rW/fvlvz9BAeNK2ZiEhJWbBgQdOKigq6dOlSs6+D/5166qlbL7/88hbTp0/fcdZZZ21cvXp15cSJE9sPHjx4S/11qqqqdt+4oqKCmpqaj00x7WvbCxcubHrnnXd2mjVr1hsdOnSoPf/88+Pbt2+PAZjtfZbKOcdjjz22uL7IMu3rNoVGIxMRKRkrV66svPLKK7t/+ctf/jAWizFy5MjNDz30UDuA1157req9995reswxx2xv1qyZO+qoo3ZNmjSp7ZgxY7accsopm+66664jTz755M0Nva9TTz11y8yZM1u/9957lTU1Nfzxj39sN3r06M3r1q2raN68eV27du1q33333cqpU6e2ARg6dOj25cuXN50/f34VwKOPPtqufltjxozZ+NOf/rRT/brMCy+80Bz4WP5XXnml2aJFiwrynVygkYmIFLkdO3bE+vfvX11TU2MVFRXuggsuWHPzzTd/AHDjjTd+eMkll3Tv27dvdUVFBffee2/QvHlzB3DiiSdumj59+mGtW7euO+OMMzZfddVVTcaMGdPgMunevfuum266acWoUaP6OufstNNO23DxxRevBxg0aNDWPn36DOzWrduOYcOGbQZo0aKF+/nPf77s05/+dO927drVDB8+fPMbb7zRHCCVSq286qqruvXv37/aOWddu3bd8eyzzy6+4YYbPrzwwgt79O3bt3rgwIFbM0dOhUbHgBeRQzZ37txgyJAhq33nKHdz585tP2TIkLjPDJrmEhGRrKlMREQkayoTERHJmspERESypjIREZGsqUxERCRrKhMRKWr1u6Dv06fPwLFjx/ZevXp1xcHcvkWLFsdmfn/HHXcccemll3bLNtf5558ff+CBB9pmu51ioQ8tikjuTGiT013QM2HDQe2C/nOf+1z81ltv7XDLLbe8n9McckAamYhIyRgxYsSWFStWNAWYP39+1SmnnNJn4MCBA4YNG9Zv9uzZzQ52e/fff3/bPn36DOzXr1/1cccd1w+gpqaGq6++uuugQYMG9O3bt/rWW29tD1BXV8ell17arVevXgNHjx7de/Xq1WX1Yr2sflgRKV01NTU8++yzrS+//PLVAFdccUX3X/7yl8sGDx68Y8qUKS2vueaabjNmzFh0MNtMpVJHPfXUU4t69Oixq376bOLEie3btGlTO2/evDe2bdtmxx9/fP9zzjln48yZM1ssXry46s0335y/fPnyJoMHDx542WWXrTnQfZQKlYmIFLX6fXOtWLGi6aBBg7aee+65Gzds2BCbPXt2q3HjxvWqv97OnTsbvPtdM3MAxx133Obx48fHzz///HXjx49fB/CPf/zjsIULF7aYNGlSW4BNmzZVLFiwoNm0adNaf+ELX1hbWVlJPB7fdeKJJ27K9c9ayFQmIlLU6tdM1qxZU3HmmWf2TqVSHa+99trVrVu3rqlfS6lXU1PDoEGDqgHOPvvs9RMnTlxZVVVVt337dmvWrJkDWLt2bWX79u1rAB5++OF3pkyZ0nLSpElthg4dOnDOnDnznXP205/+9J3zzz9/Y+a2J0+e3KZYdhffGLRmIiIl4Ygjjqi944473rnrrrs6tWzZ0nXt2nXn/fff3xbC9YyXXnqpeWVlJQsXLlywcOHCBRMnTlwJMHz4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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"gen_perf_pie(channel_jump_results, \"NAR\")"
]
},
{
"cell_type": "markdown",
"id": "a10bf853-0ee7-488b-a3e3-bfe65a05d839",
"metadata": {},
"source": [
"### Casync Substitution Performance"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "73880ec4-caa8-49a3-9e85-2846235f735c",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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3LhxE/bee++JY8eOnZBKpXbbsmVL2wvupIMOOmjsvHnz+nT2cR555JH+06dP3zvEc2sOVSQGEsn0lFw+Xk111cK27tOrV6/m5cuXLwNYtWpV2cknn7xnJpMpve6661bnMksh0QhVRNo0fPjwpttuu63mjjvu2LW5uZn6+nr78pe/nBgzZsyE8ePHT3j44Yf7A0ybNm3vBQsWlAOMHz9+wiWXXDIU4F//9V+HXXvttYMfeeSR/gcddNDY448/fs9Ro0ZNPPHEE0c1Nzf/w/Pdcsstg8aMGTNh9OjREy+88MLhLdfPnDlz5KRJk8bvvffeEy+66KJhLdc/8MADA0aNGjVxypQpYx944IHKluvXr19fcvLJJycmTZo0fvz48RPuvvvuSoC6ujo74YQT9hwzZsyEqqqqPRsaGnJyXiwVqoi0y4QJEzY1NzezatWqsiuvvHJXgBUrViy755573jjvvPMS9fX1duihh9bNnj2737p160pKS0vdc8891w/gueee63f00UfXArzyyivlN95449srV65c+tZbb/V6/PHHtzpjbk1NTY9UKjV8zpw5K5YtW7b0xRdf7HvXXXdVAlx77bWrlixZ8sry5cuXPv300/0XLFhQXl9fb9/85jcTDz300MoXXnjh1ffff//vZ5297LLLhk6fPn39kiVLXnnqqadevfzyy0esX7++5Oqrr961vLy8ecWKFcuuuOKKNcuWLeubi/dIhSoi7dZy/ORnnnmm35lnnvkhwP77798wbNiwTS+//HLvI488snb+/Pn9H3/88f7HHXdcpr6+vrS2trbknXfe6bXvvvs2AkyePHnDXnvttbm0tJSJEyfWv/766z2zn2P+/Pl9Dz744Nphw4Y19ejRg1NPPXXd3Llz+wH88pe/HDRhwoTxEyZMmPDaa6/1Xrx4ce9Fixb1HjFiROPkyZMbS0pKmDlz5octjzVnzpwB11133dBx48ZNOOyww8Y2NjbaypUre86fP7/fGWec8SHA1KlTN44ZM6Y+F++P5lBFpF2WLVvWs7S0lOHDhzdt78D0RxxxRP0555zTZ968eY2f+cxn1q9du7Zs1qxZgydPnvz3E1P26tXr7wuXlpbS1NS01er29h57+fLlPW+44YbdFi5c+MqQIUO2zJgxI9HQ0FACsPXZtbd+rAceeGBlS5ln294ynaERagyY2RYzW2Rm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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"gen_perf_pie(channel_jump_results, \"Casync\")"
]
},
{
"cell_type": "markdown",
"id": "56b8480d-e514-44b6-9d8a-58aee25dcd6d",
"metadata": {},
"source": [
"### File Substitution Performance"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "18501013-b356-4cf9-9574-f24ce5c8972d",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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+eSTDk899dSXTghZUVHRLgiCAbNmzXpv4cKFby9YsKDzvffe2x3guuuuW/bWW2+9s2jRordffPHFrvPmzSveuHGj/eAHP0jMnDlz8fz589/97LPPPj+h4i9+8Yt+kyZNWvfWW2+988ILL7z7q1/9auC6desK/vjHP+5eXFxc89577y28/PLLVyxcuLBzJt4jFaqINFnt8ZNfeumlLmedddYqgH322Wdz//79t7755psdDzvssKo5c+Z0feqpp7oeffTR6Y0bNxZWVVUVLF26tMPee++9BWDMmDEb9tprr22FhYWMGjVq4wcffNC+7mvMmTOn8wEHHFDVv3//6nbt2nHqqaeufv7557sA3HPPPT1LS0tHlpaWlr7//vsdX3/99Y6vvfZax4EDB24ZM2bMloKCAqZMmbKqdlmzZs3qdv311/cbMWJE6cEHHzx8y5Yttnjx4vZz5szpcuaZZ64CmDBhwqZhw4ZtzMT7ozlUEWmShQsXti8sLGTAgAHVOzsw/aGHHrrxnHPO6TR79uwtX/va19ZVVlYWTZs2rdeYMWM21D6mQ4cOnz+5sLCQ6urqL61u72zZixYtan/TTTf1efXVV9/p3bv39smTJyc2b95cAPDlE+J+eVkPPfTQ4toyr2tnz2kJjVCzmJltN7PXzOxtM3vdzC6NzkHfWq83KzqjZ0uXc5iZPebjtaV1LF++vOi8884b9N3vfvezgoICDj744PUzZszoCfDGG290WLFiRfuxY8du7tixo+vXr9+2mTNn9pg0adKGQw45pOrmm2/ue9BBB61v6msdeuihG+bNm9d1xYoVRdXV1Tz44IM9DzvssPVr1qwpLC4urunZs+f2JUuWFM2aNasEYNy4cZuXLl3a/u233+4A8MADD/SsXdakSZPWXXvttX1q52lffPHFYuBL+efPn9/xvffea/EWftAINdttcs6NAzCz3QnPuV4CXOEzlOSHLVu2FIwYMaK0urraCgsL3amnnrrqiiuu+BfAz372s8/OPPPMQcOGDSstLCzktttuqyguLnYABx54YNXs2bO7de3ateaoo45aP3Xq1HaTJk1qcqEOGjRo2+WXX75s4sSJw5xzdsQRR6TPOOOMtQCjR4/eOHTo0FF77LHHlvHjx68H6NSpk7vxxhs/Pu6444b07NmzesKECevfeeedYoDy8vLlU6dO3WPEiBGl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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"gen_perf_pie(channel_jump_results, \"File\")"
]
},
{
"cell_type": "markdown",
"id": "14e5e556-7cf3-4adc-a39c-cb2da8d5d2da",
"metadata": {},
"source": [
"### Compressed File Substitution Performance"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "5cabacfc-9712-4918-816f-b9bfbdafb309",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAVQAAAFkCAYAAAB/6MMYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAzTklEQVR4nO3deZhT9b3H8fc3s7E6rCpLMcg2zIBgUcCKLOIeF6qi9aJerYL11rbacjFaq2m1vbFuVIuKuxW3SrWicYFWWRXcAGUXNeyICIR9GeZ3/zhnahiZjcnkd07yfT1PnskkOSefOcl8cracI8YYlFJK1V3AdgCllMoUWqhKKZUiWqhKKZUiWqhKKZUiWqhKKZUiWqhKKZUiWqg+JSJXiMjMWg5zkogsTfo9LiKnpD5deojIYBFZXU/jPuRp4/fpejCH8n7LRp4vVBH5LxH5SES2i8g6EXlTRAbYzuVlIhIUEeNOs/LLfGPMDGNMtxSMf7CIlCWNe7WI/F1Ejk9F/kwkIpNF5DQRiYjIPne6bRGR90TkhEMcZ/nrnFvh9qdE5I7UJK9VjvL3w9ci8rqInFqLcWREYXu6UEXk18BY4E/AEUAH4EHgPIuxqPgG9rBmxpgm7qVXise91hjTBGgK9AeWADNEZGiKn8f3RKQx0AeY5t70ojvtWgHvAi/ZypZizdy/qxcwBXhFRK6wGym9PFuoIlII/AH4uTHmZWPMDmPMPmPMa8aY/3UfUyAiY0VkrXsZKyIF7n2D3TmnMSKywZ27HSYiZ4nIMhHZJCI3Jz1fREQmisiLIrJNRD4RkV5J98dF5EYR+RTYISK5ItLfncPYIiLzRWRw0uOvEJEv3XF9JSIj3Ns7i8g0EUmIyEYReTFpmCIRmeJmWyoiFyXd11JEJonIVhH5AOh0CNO00kVkEQmISFhEvhCRb905zhbVjdM4VhtjbgUeA+5MGuePRORD92/9UER+5N4+REQ+S3rcv9y/qfz3mSIyzL0eF5HRIvKpO54XRaRBJX9DdxGZ6r4eC0Xk3KT7QiIy151+q0QkUmHYy0Rkhfu3/7Y206aqYV1DgVnGmD0Vpl0p8CzQTkRau+MqFJHH3ffrGhG5Q0RyDj71q2fj/WaMWW+M+QsQAe4UkYA7zvJpuE1EFonIj93buwMPAyeIO+fu3l7la+ZJxhhPXoAzgFIgt4rH/AGYDRwOtAbeA2537xvsDn8rkAeMBL4BnsOZqyoBdgNHu4+PAPuAC93Hjwa+AvLc++PAPOAHQEOgHfAtcBbOB9Op7u+tgcbAVqCbO2wboMS9/jzwW3eYBsAA9/bGwCrgSiAX+CGwMWm4F4C/u4/rAawBZlYyXYKAqTjt3GmyOun3OHCKe/16d1q2BwqA8cDzlYz/gPEk3X4yUOZmbAFsBi5z/55L3N9bun/3Lpw5tFxgPbDWfV0auve1TMr4AdDWHedi4GcVc7iv2XLgZiDfzbIt6TUYDPR0p/sxwNfAMPe+YmA7MND92+/Fee9UO22qG9Z9zMPANUnvswnu9Xwg6r7Oue5t/3TH3xjnff1B+bC1eJ2fAu7wwPvtaPf27u7vw93XMQBcDOwA2rj3XVFx/FW9Zl69WA9QaTAYAayv5jFfAGcl/X46EE96MXYBOe7vTd0Xt1/S4z9O+qeKALOT7gsA64CT3N/jwE+T7r8ReKZCnreB/3bfhFuAC4CGFR7zN+ARoH2F2y8GZlS4bTxwG5CDU/ZFSff9qQZv8C1Jl9FUXaiLgaFJ97Vxn/N7H2gVx5N0e5H7vO1wivSDCve/D1zhXp8BnI+zumAyzj/vGcAQ4NMKGS9N+v3PwMMVcwAn4RRzIOmxzwORSqbRWOA+9/qtwAtJ9zUG9tZk2lQ3rHvbCuAHSe+zve5rsh/nQ3iwe98RwJ7k9wzOB9G71bzOVRVqOt9vFXM0cG8/sZLh5gHnudevqGz8B3vNvHrx7CI/zhutlVS9vrItzpu13Ar3tv+Mwxiz372+y/35ddL9u4AmSb+vKr9ijCkDVlcY36qk60cBw93Fyy3uYsoAnE/cHThv2J8B60QkJiJF7nBjAAE+cBdLf5o0vn4VxjcCOBJnrje3wvMn/92VaWWMaeZe7q7msUfhrPMqf+7FOP/wR9Tgecq147sir/jalGdu516fhlOIA93rU4FB7mVaheHWJ13fyYGvWbm2wCr3dfve84lIPxF5V0S+EZEEzmvTKnnY8oHc1+/bpPFUNW2qHFZEegJbjTHJr93fjTHN3OEX4KxfLX+ePJz3TPlzjceZU8V9v5Rv+DkJZ04Yd5hkeTiFCOl9v1VU/lpvcvNfLiLzkp6vB9+9Bt9TzWvmSV4u1PdxFsmHVfGYtThvjHId3NsO1Q/Kr7jrfdpXGF/yoblW4cyhNku6NDbGRAGMMW8bY07FmZtZAjzq3r7eGDPSGNMWuAZ4UEQ6u+ObVmF8TYwx1+KsqihNzuf+ram0CjizwvM3MMasqcU4fgx84pZKxdcGnMzl46tYqNOovFBrYi3wg/L1dQd5vueASThzioU4i+Hi3reOA1/7RjirJspVNW2qG/YsIHawwMaYjTjvgYiItHGfZw8HfhAeZowpcR9fYr7byDjDfe59OHOIyTriFqDl99uPgQ3AUhE5Cud/4Dqc1TnNcD5Myl+Dgx32rqrXzJM8W6jGmATO4tQ4cTYmNRKRPBE5U0T+7D7seeAWEWktIq3cx0+ow9P2EZHz3bni63He3LMreewE4BwROV1EckSkgTgbfdqLyBEicq44W3f34Kxj2w8gIsNFpL07js04b6T9wOtAV3cDR557OV5Eurtz2S/j/OM1EpFinFULqfQw8Ef3jY87Tc+rbiBxtBOR24CrcdZhArzh/j3/Jc4GvItx1je+7t7/HtAN6IuzamAh7lwTMP0Q8s/BWSc3xp12g4FzcNYFgrPKZ5MxZreI9AX+K2nYicDZIjJARPJx1s0n/29UNW2qGzbkTouDMsYswVlVNMYYsw5n9cc9InKYOBvDOonIoEqG3Q/8w83W0v27L8GZzm+6WdP+fnPf/9fhrD64yV1qaOw+9zfuY67EmUMt9zXQ3p2G5ap6zbzJ9jqH6i44iyEf4fyzrMf5tP+R+W4dzf04n9Tr3OsN3PsGc+D6wlycFzSYdNtM3PVzOOu2JgIv4mzMmAv8MOmxcZLWi7m39cOZm9qE80aJ4XySt3FvT+As/k4Fit1h/owz17QdZx3wqKTxdXPH8Q3OYuM7QG/3vtY4/wRbcTZU3E5qN0oFgF8DS92//wvgT5WMfzDOxqft7uuy1p12/Ss8bgDOeuqE+3NAhfvfJ2n9oDuOxRUec8B058CNOhX/npKk6b4I+HHSfRfizLVtc6fjX8vH497/38BKd7r/tjbTprJhgUL3tcw9WP4K76MdOIv2hcBDOKubEjjvw59U8f/RHGfvijU4hTmLpHWWpPf9Vv5+2IDzIXJGhcf9Eed/ZSPOxrtpwNXufflulk3Axpq8Zl68iBs867m7ZHQ2xlxqO4vKDOLshnShMeaiah+sMoJnF/mVygBbgPtsh1Dp45dv/CjlO8aYybYzqPTSRX6llEoRXeRXSqkU0UJVSqkU0UJVSqkU0UJVSqkU0UJVSqkU0UJVSqkU0UJVSqkU0R37lfKgjz/++PDc3NzHcA4gojM+6VcGLCgtLb26T58+G2o6kBaqUh6Um5v72JFHHtm9devWmwOBgH77Js3Kysrkm2++KV6/fv1jwLnVDuDSTz6lvKlH69att2qZ2hEIBEzr1q0THHiIweqHq6c8Sqm6CWiZ2uVO/1p1pBaqUuqgcnJy+hQVFRV37ty5pFu3bsWRSOSI/fv3Vz/gIerbt2+36dOnN6rreF5//fWmQ4YM6WzjuXUdqlI+EAzH+lT/qJqLR0MfV/eYgoKCsiVLliwCWLNmTe7w4cOPTiQSOffdd19dTjOU0XQOVSlVrXbt2pU+9thj8SeffPLwsrIydu7cKRdeeGGwa9euxd27dy9+7bXXmgIMGjSo85w5cxoCdO/evXj06NFtAH71q1+1vffee1u9/vrrTfv27dvtjDPOOLpjx44l5557bseysrLvPd/48eNbdO3atbhLly4l1157bfnJ/hgxYkSHHj16dO/cuXPJDTfc8J8TaE6cOPGwjh07lvTp06fbxIkTm5XfvnXr1sDw4cODPXr06N69e/fiCRMmNAPYvn27nH322Ud37dq1OBQKHb179+6UnKtKC1UpVSPFxcV7y8rKWLNmTe6dd955OMCyZcsWPffcc1+OGjUquHPnTjnxxBO3v/POO002bdoUyMnJMbNnz24CMHv27CZDhw7dBrB48eKG48aNW7V8+fKFK1euLJgyZcoBZ7GNx+N5kUik3dSpU5ctWrRo4dy5cxs/88wzzQDuvffeNQsWLFi8ZMmShbNmzWo6Z86chjt37pTrrrsuOGnSpOUffvjh0g0bNvznLLA333xzmyFDhmxdsGDB4hkzZiy95ZZb2m/dujVw9913H96wYcOyZcuWLbr11lvXLVq0qHEqppEWqlKqxsqPn/zee+81ufzyy78FOPbYY3e3bdt272effdZg8ODB22bOnNl0ypQpTU877bTEzp07c7Zt2xZYvXp1Qa9evfYA9OzZc0enTp325eTkUFJSsvOLL75IPjEfM2fObNy/f/9tbdu2Lc3Ly+Piiy/eNG3atCYATz/9dIvi4uLuxcXFxZ9//nmD+fPnN5g3b16D9u3b7+nZs+eeQCDAiBEj/nMa76lTpx523333tSkqKioeMGBAtz179sjy5cvzZ86c2eSyyy77FqBfv367unbtujMV00fXoSqlamTRokX5OTk5tGvXrrSyA9MPHDhw51VXXdVo+vTpe04//fStGzduzB07dmyrnj177ih/TEFBwX8GzsnJobS09IDF7crGvWTJkvy//vWvR3z88ceLW7duvf+CCy4I7t69OwAgcvAldmMMEydOXF5e5skqG6YudA5VKVWttWvX5o4cOfKoK6+8ckMgEGDAgAHbJ0yY0ALg008/LVi3bl3+Mcccs7tBgwamTZs2+yZNmtR8yJAhO0466aRt48aNO/LEE0/cXtPnGjhw4I45c+Y0XbduXW5paSkvvfRSi8GDB2/fvHlzTsOGDctatGixf9WqVblTp04tBOjdu/fu1atX5y9cuLAA4IUXXmhRPq4hQ4Zsveeee44oX087a9ashsAB+T/88MMGy5Ytq/MWftA5VKVUJfbs2RMoKioqLi0tlZycHHPxxRd/e9ttt30NMGbMmA2XXXbZUV27di3Oyclh/Pjx8YYNGxqAE044Ydv06dMPa9q0admpp566fdSoUXlDhgypcaEeddRR+2699dY1gwYN6mqMkaFDhyYuvfTSLQA9evTY2aVLl5IOHTrs6dOnz3aARo0amQceeGDF2Wef3blFixal/fr127548eKGANFodO2oUaM6FBUVFRtjpH379nvefffd5aNHj97wk5/8pGPXrl2LS0pKdibPQdeFnlNKKQ+aP39+vFevXhtt58h28+fPb9WrV69gTR+vi/xKKZUiWqhKKZUiWqhKKZUiWqhKKZUiWqhKKZUiWqhKKZUiWqhKqYMqP3xfly5dSk4++eTOGzduzKnN8I0aNTo2+ff777+/5eWXX96hrrkuuOCC4JNPPtm8ruOpD7pjv1J+EClM6eH7iCRqdfi+888/P3jXXXe1vvPOO9enNEeG0TlUpVS1+vfvv2PNmjX5AAsXLiw46aSTupSUlHTv06dPt7lz5zao7fieeOKJ5l26dCnp1q1b8XHHHdcNoLS0lGuuuaZ9jx49unft2rX4rrvuagVQVlbG5Zdf3qFTp04lgwcP7rxx40bPzgh6NphSyhtKS0t59913m1511VUbAa6++uqjHnnkkRU9e/bc88477zS+9tprO8yePXtZbcYZjUbbTJ48eVnHjh33la9KGDt2bKvCwsL9CxYsWLxr1y45/vjji84555ytc+bMabR8+fKCpUuX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\n",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"gen_perf_pie(channel_jump_results, \"Compressed File\")"
]
},
{
"cell_type": "markdown",
"id": "2f76e30b-3016-4aa6-a0a6-5c3159a05790",
"metadata": {},
"source": [
"### Comparing the Substitution Techniques"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "9e0cccbb-3372-4663-8af8-51d7bd6c396f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Name</th>\n",
" <th>Closure Size (MB)</th>\n",
" <th>Downloaded Size (MB)</th>\n",
" <th>Re-used Size (MB)</th>\n",
" <th>DL Savings Compared to NAR (%)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>NAR</td>\n",
" <td>387.457979</td>\n",
" <td>375.167475</td>\n",
" <td>12.290504</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Casync</td>\n",
" <td>610.885612</td>\n",
" <td>310.540811</td>\n",
" <td>300.344801</td>\n",
" <td>17.226084</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>File</td>\n",
" <td>1658.069335</td>\n",
" <td>861.781638</td>\n",
" <td>817.549735</td>\n",
" <td>-129.705850</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Compressed File</td>\n",
" <td>478.120248</td>\n",
" <td>307.478671</td>\n",
" <td>170.641577</td>\n",
" <td>18.042290</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Closure Size (MB) Downloaded Size (MB) \\\n",
"0 NAR 387.457979 375.167475 \n",
"1 Casync 610.885612 310.540811 \n",
"2 File 1658.069335 861.781638 \n",
"3 Compressed File 478.120248 307.478671 \n",
"\n",
" Re-used Size (MB) DL Savings Compared to NAR (%) \n",
"0 12.290504 0.000000 \n",
"1 300.344801 17.226084 \n",
"2 817.549735 -129.705850 \n",
"3 170.641577 18.042290 "
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"channel_jump_results"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "9c1ff374-911d-4f9b-bf62-cb09cdbdf317",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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29l33307ZNvXXnst2267Ldtssw1bbLEFF154IQAXXHABl156aeVaH3zwQT772c8CcPHFFxMR3HrrrUum/+Y3vyEiuPLKK5fUuemmmzJixAg233xzJkyYsGTe3XffnZdffrlyTWALtSRJUofo378/Dz30EACzZ8/msMMOY968eZx++umNLayTLFiwgGOPPZb77ruPwYMHM3/+fJ599lkAjjvuuA7Zxne/+12+9a1vLRneeuutmThxIrvtthsAV1xxBdtss81Sy1x++eWMHDmSv//972y00UYceeSRrLTSSowbN46f/OQnfPOb36xcl4FaktQldfRH9r2dXRY619prr82ECRPYfvvtGT9+PPPnz+f4449n8uTJ9O3bl3PPPZdddtmFvffem7POOovhw4ez7bbb8slPfpJvf/vbnHrqqQwZMoSNN96Y8ePHs9Zaa/HII4/woQ99iMsuu+xdF85NnDiR7373u2Qm++yzD2effTYAxx9/PPfffz9vvfUWBxxwwJJw/4c//IGTTz6ZtdZai+22227Jet544w1OPPFEHn74YRYuXMj48ePZb7/9eOuttzjqqKN49NFH2XzzzXnrrbfetc+vvfYaCxcuZODAgQCsvPLKbLrppgCMHz+e1VZbjcMOO4y99957yTIPP/wwzzzzDKussgrHHXcc06dPB+C8885jxx13fNf6p0yZslRgHj16NHfddRcLFixg/vz5PP3004wYMaLFn8nrr7/OqquuSp8+fQAYO3Yso0ePNlBLkiR1VRtuuCGLFy9m9uzZXHbZZUARIB9//HH22GMPnnzySXbeeWfuuusuhg4dSt++fbnnnnsAuPvuuzniiCOYNWsWDz74IFOnTmW99dZjxx135J577mGnnXZasp2ZM2fy1a9+lQceeIABAwawxx578Nvf/pb999+fM844gzXXXJNFixax2267MWXKFD74wQ9yzDHHcNttt7Hxxhtz8MEHL1nXGWecwa677srPf/5zXnnlFUaNGsXuu+/OhRdeyCqrrMKUKVOYMmXKUiG8yZprrsnYsWMZMmQIu+22G/vuuy+HHnooK6zwTg/j9dZbb0kr/o9//GPuuOMOhgwZwmGHHcYXv/hFdtppJ6ZPn86ee+7JY489ttT6J0+ezFZbbbXUuIhg991358Ybb2TevHmMHTuWadOmLTXP4Ycfzsorr8xTTz3FeeedtyRQDxgwgPnz5zN37twlbwLeK/tQS5Ik1UlmAkVAHjduHACbbbYZQ4YM4cknn2T06NHceeed3H333eyzzz68/vrrvPnmmzz77LNLWndHjRrF4MGDWWGFFRgxYsSSbhRN7r//fsaMGcOgQYPo27cvhx9+OHfeeScAkyZNYrvttmPbbbdl6tSpPProozz++OMMGzaMTTbZhIjgiCOOWLKum266ibPOOosRI0YwZswY3n77baZPn86dd965ZL7hw4czfPjwFvf3oosu4tZbb2XUqFGcc845fOYzn2lxvnvuuYeLLrqIn//85wDccsstfP7zn2fEiBGMHTuWV199lddee22pZWbNmsWgQYPeta5DDjmEK664giuuuIJDDz30XdMvv/xypkyZwvTp0znnnHP429/+tmTa2muvzcyZM1uscXnYQi1JklQHzzzzDH369GHttddeEqyb23777Zk8eTIbbrghH/vYx3jppZf46U9/yoc+9KEl86y88spLXvfp04eFCxcutY7W1j1t2jTOOecc7r//fgYMGMCRRx655IElrd1rOTO56qqrloT5Wu29P/PWW2/N1ltvzbhx4xg2bBgXX3zxUtNnzZrF0UcfzTXXXMNqq60GwOLFi/m///s/+vfv3+p6+/fv3+IDV0aNGsUjjzxC//79+eAHP9jq8oMGDWK77bbj3nvvZciQIUDxQKC2ttleBmpJktTjNLrP+Jw5czjuuOP4/Oc/T0Sw8847c/nll7Prrrvy5JNPMn36dDbddFNWWmklNthgAyZNmsSpp57KnDlz+PKXv8yXv/zldm9rhx124KSTTuKll15iwIABTJw4kRNPPJFXX32VVVddlTXWWIMXX3yRG264gTFjxrDZZpsxbdo0/vrXv7LRRhsxceLEJevac889Of/88zn//POJCB588EG23XbbJfXvsssuPPLII0yZMuVddbz++utMnjyZMWPGAPDQQw8tCa5NFixYwEEHHcTZZ5+9VPjdY489+K//+i/+/d//fcmyzftCb7755nz/+99v8RiceeaZ9OvXr83j9Oabb/Lggw/yla98BSjePLzwwgsMHTq0zeXaw0AtSZLUAd566y1GjBjBggUL6Nu3L+PGjeOUU04B4N/+7d847rjj2Hrrrenbty8XX3zxkpbn0aNHc+utt7LKKqswevRoZsyYwejRo9u93XXX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\n",
"text/plain": [
"<Figure size 864x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"_ = channel_jump_results.plot.bar(figsize=(12,5), x=\"Name\",y=\"Downloaded Size (MB)\",title=\"Volume to Download for the Channel Jump (less is better)\", xlabel=\"\", ylabel=\"Size in MB\")"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "4dcd7cc8-1185-411b-8e30-115f5c5f516b",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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SZpZh+zhbhERiwDXAEdm5n/aO+KWmYOBwQD9+/fPWS3f+/ibPk2Zn/DiWTvOcpmuXbvSt29fpk6dSrdu3Rg4cCBHHnkkXbp04e677+acc87hxhtvbHX9hx56iCOOOIIpU6YwZcoU9tlnH0499dTZrnXYsGE8+eSTHH/8HHXntMstt9zCySefzDvvvENmstNOO3HOOedUtr+5bZFFFuHtt9+eYdrEiRMZMmQI3/nOd2ZrWxHBUUcdxbnnngvAOeecw9tvvz3Da7fOOuvQp08frrjiiunTDjroIO655x4WX3xxMpPzzjuPrbfeuu4+jjzySHbffXc233xz9t9/f0aNGsVOO+3ET37yEwB+/OMf069fP3bddVcAbrzxRh555BFOO+202XoskiSpfTrsCHdELEARti/PzGvLya9GxPLl/OWB1xpV36fVo0cPRo4cyZgxY7j99tu5+eabZyvwDBw4kMGDBzNy5EhGjx7N3nvvPUd17LLLLpWG7dGjR3P44Yfzxz/+kaeeeorRo0ez6qqrVra/9vrwww8/1foTJ07kl7/85Wyvt+CCC3Lttdfy+uuv153/1FNPMW3aNO69917eeeedGeb97Gc/Y+TIkZx//vl8+9vfrrv+m2++yUMPPcTmm2/OE088AcATTzzBfffdx6RJkxg/fjzDhw+fHrYBdtxxR4YNG8a77747249HkiTNWocM3FEMZV8MPJWZ59XMGgYMLG8PBG6Y17VVYZlllmHw4MFceOGFZM5yQB6A1157jeWXXx4oRsv79OkDwPDhw9lkk0340pe+xCabbMIzzzwDwEYbbcSYMWOmr7/FFlvw6KOPcumll3L44YcDxSjq9773PTbZZBNWXXVV/vSnPwEwbdo0vvOd77DWWmux0047scMOO0yfd/zxx9OnTx/69evHD37wg0/UefbZZ3PiiSeyxhprANCtW7fpo8L//Oc/2XrrrenXrx9bb701L7300vQ6Dj30ULbccktWXXVV7rnnHg4++GDWXHNNDjrooOnbXmSRRTj66KNZb7312HrrrWlpH/rNb37DBhtswDrrrMMee+wxPUgedNBBHHXUUWy55ZYcd9xxPPfcc2y//fasv/76fOUrX+Hpp58G4IUXXmDjjTdmgw024OSTT677/B9//PE899xzrLvuuhxzzDFkJscccwxrr702ffv25aqrrqq7Xrdu3Rg0aBD/+7//W3f+kCFDOOCAA/ja177GsGHD6i6z8cYb8/LLL9ed96c//Yntt98egAUWWID33nuPadOm8cEHH9C1a1dOOeUUTj/99BnWiQi22GKLNr9RkSRJc66jtpRsChwAjIqIkeW0HwJnAUMj4pvAS8BejSlv7lt11VWZNm0ar73WvkH773//+3zxi19kiy22YPvtt2fgwIF0796dNdZYg3vvvZdu3bpxxx138MMf/pBrrrmGAQMGMHToUE477TTGjx/PK6+8wvrrr8+oUaNm2O748eO5//77efrpp9lll13Yc889ufbaa3nxxRcZNWoUr732GmuuuSYHH3wwb775Jtdddx1PP/00EcHEiRM/Uefo0aM5+uij6z6Gww8/nAMPPJCBAwdyySWX8L3vfY/rr78egLfeeou77rqLYcOGsfPOO/PAAw/w29/+lg022ICRI0ey7rrr8s4777Deeutx7rnncvrpp3Paaadx4YUXsvvuu3PIIYcAcNJJJ3HxxRfz3e9+F4B//OMf3HHHHXTt2pWtt96aX//616y++uo8/PDDfOc73+Guu+7iiCOO4NBDD+XAAw/kF7/4Rd3azzrrLEaPHs3IkSMBuOaaaxg5ciSPP/44r7/+OhtssAGbb7759A9FtQ477DD69evHscce+4l5V111FbfffjvPPPMMF154Ifvuu+8nlvnLX/7CbrvtVreuBx54gD333BOANddck5VWWon11luPAw44gLFjx5KZfOlLX/rEev379+e+++6b429KJEkzmtvtqs2sPa26HV2HDNyZeT/QWsN2/cbVTqC9o9sAp5xyCvvvvz+33XYbQ4YM4YorruDuu+9m0qRJDBw4kGeffZaIYOrUqQDsvffebLvttpx22mkMHTqUvfaq/1llt912o0uXLvTp04dXX30VgPvvv5+99tqLLl26sNxyy7HlllsCsNhii9G9e3e+9a1vseOOO7LTTjvN1uN98MEHufbaolvogAMOmCGA7rzzzkQEffv2Zdlll6Vv374ArLXWWrz44ousu+66dOnShX322QeAb3zjG+y+++5AEfJPOukkJk6cyNtvv8122203fbt77bUXXbt25e233+Zvf/vbDM/DlClTgCK0XnPNNdPrOu6442b5WO6//3723XdfunbtyrLLLstXv/pVHnnkEXbZZZdPLLvYYotx4IEH8vOf/5wePXpMn/7II4+w9NJLs/LKK9OrVy8OPvhg3nrrLT772c8CcMwxx3Dsscfy2muv8dBDD9WtY/z48Sy99NLT759//vkzPKcXXXQRZ555Jo8//jjbbrvt9A8myyyzDK+88krdbfpHY+7qDH84JEmzp0O2lDSj559/nq5du7LMMnVPvFLXaqutxqGHHsqdd97J448/zhtvvMHJJ5/MlltuyejRo/nzn/88/TzKPXv2ZMkll+SJJ57gqquuYsCAAXW3ueCCC06/3fIBoLUPAt26dWP48OHsscceXH/99dNbGWqttdZaPProo+16PLUHxbbU0aVLlxlq6tKlS6v91y3rH3TQQVx44YWMGjWKH/3oRzOcS3rhhRcGijaZJZZYgpEjR07/eeqpp+rW0h6z82EJigMbL7744hn6tK+44gqefvppevfuzWqrrcZ//vOf6cEfih7usWPHcsYZZzBw4MB6m6VHjx51z519ww030L9/f9555x1Gjx7N0KFDueyyy6a327z//vszhH9JkjT3GLg7gAkTJvDtb3+bww8/vN1B76abbpoe8p599lm6du3KEksswaRJk+jZsycAl1566QzrDBgwgLPPPptJkyZNHzFuj80224xrrrmGadOm8eqrr3L33XcD8PbbbzNp0iR22GEHzj///OntFbWOOeYYfvKTn/CPf/wDKILueecVbfmbbLIJV155JQCXX345m222WbtratlWSy/5kCFDpq8/efJkll9+eaZOncrll19ed93FFluMVVZZhauvvhooAvPjjz8OwKabbjpDXfUsuuiiTJ48efr9zTffnKuuuoqPPvqICRMmcO+997Lhhhu2WvvnPvc59t57by6++OLpj+Xqq6/miSee4MUXX+TFF1/khhtumOFMJVB84DjiiCOYNm0at9566ye2u+aaazJ27NgZpk2dOpULLriAY445hnfffXf6e6yltxuKVpu111671XolSdKc65AtJfNaI77ife+991h33XWnnxbwgAMO4Kijjpo+/84776RXr17T71999dVsvPHG0+9fdtllfP/732ehhRaiW7duXH755XTt2pVjjz2WgQMHct5557HVVlvNsM8999yTI444otUDAVuzxx57cOedd7L22mvzhS98gY022ojFF1+cyZMns+uuu/L++++TmXUPBOzXrx/nn38+++677/Swt+OOxfP9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\n",
"text/plain": [
"<Figure size 864x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"_ = channel_jump_results.plot.bar(figsize=(12,5), x=\"Name\",y=\"DL Savings Compared to NAR (%)\",title=\"DL Savings Compared to NAR (more is better)\", xlabel=\"\", ylabel=\"Savings in %\")"
]
},
{
"cell_type": "markdown",
"id": "b75a48a8-e66b-46b7-97eb-802a2a674d04",
"metadata": {},
"source": [
"I'm surprised on this one! I did not expect any gains, yet here we are, looking at a 18% improvement for compressed files, 17.2% improvement for Casync. While not amazing, it's big enough to be noticeable."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python3 - python",
"language": "python",
"name": "ipython_python"
},
"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.9.6"
},
"toc-showtags": false
},
"nbformat": 4,
"nbformat_minor": 5
}