Skip to content

Instantly share code, notes, and snippets.

@valschneider
Created February 5, 2018 22:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save valschneider/6f203143bee1e149f24c44e9582a9eff to your computer and use it in GitHub Desktop.
Save valschneider/6f203143bee1e149f24c44e9582a9eff to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2018-02-05 21:35:05,344 INFO : root : Using LISA logging configuration:\n",
"2018-02-05 21:35:05,345 INFO : root : /home/valsch01/Work/lisa/logging.conf\n"
]
}
],
"source": [
"import logging\n",
"from conf import LisaLogging\n",
"LisaLogging.setup()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"%pylab inline\n",
"\n",
"import json\n",
"import os\n",
"\n",
"# Support to access the remote target\n",
"import devlib\n",
"from env import TestEnv\n",
"\n",
"# Import support for Android devices\n",
"from android import Screen, Workload\n",
"\n",
"# Support for trace events analysis\n",
"from trace import Trace\n",
"\n",
"# Suport for FTrace events parsing and visualization\n",
"import trappy\n",
"import pandas as pd\n",
"\n",
"from wlgen import RTA, Periodic, Ramp, Step, Pulse\n",
"from executor import Executor\n",
"from time import sleep\n",
"\n",
"from IPython.display import display"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"root = \"/data/work/lisa/results\"\n",
"dirs = [\n",
" os.path.join(root, \"stale_load_test_vincent\"),\n",
" os.path.join(root, \"stale_load_test_tweaks\")\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"stats = [\"time\", \"hits\", \"avg\"]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"data = {}\n",
"\n",
"for dir in dirs:\n",
" data[dir] = {}\n",
" df_data = []\n",
" files = [os.path.join(root, dir, file) for file in os.listdir(dir) if 'txt' in file]\n",
" for file in files:\n",
" with open(file, 'r') as fh:\n",
" sum = float(fh.readline())\n",
" count = int(fh.readline())\n",
"\n",
" # Collect total stats\n",
" avg = sum/count\n",
"\n",
" df_data.append((sum, count, avg))\n",
" data[dir] = pd.DataFrame(df_data, columns=stats)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# Convert all of the data into df's that can be compared in a boxplot\n",
"# That means one df per function\n",
"tmp = []\n",
"for dir in dirs:\n",
" df = data[dir]\n",
" df.columns = [col + '_{}'.format(dir.split('_')[-1]) for col in df.columns]\n",
" tmp.append(df)\n",
"\n",
"df = tmp[0]\n",
"for other in tmp[1:]:\n",
" df = df.append(other)\n",
"\n",
"box_data = df"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9YAAAGDCAYAAADONYjfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAHqlJREFUeJzt3XmUpXV95/HPV8AlgGBsh6hR2qCe\ntOJCJOqQMWkcxqjEPUaJS8ggDseAY5wxdgaMKw5xCXqIDtGQg2dMkEAcXDCoM6EmSjQDKouCUVSM\n20iDSECWabq/80fd1qKt7q7uX3fd6urX6xwO9z73qef51u2HS737ee6t6u4AAAAA2+cu0x4AAAAA\ndmXCGgAAAAYIawAAABggrAEAAGCAsAYAAIABwhoAAAAGCGsAYF5V9YKq+sSU9v2lqlo9jX0DwLYS\n1gCwk1XVb1fVJVV1c1V9r6r+tqr+zbTn2pru/svuftLO2HZVXVNVKye3z6yqN22y74d398xO2O/R\nVXXmjt4uALs3YQ0AO1FVvTLJO5K8OckBSR6Y5N1JnjHNubamqvac9gwAsKsQ1gCwk1TVfknekOT3\nuvuD3f2j7l7X3R/p7ldN1rlbVb2jqr47+ecdVXW3yWOrq+rbVfUHVXXt5Gz3M6vqqVX1lar6QVX9\nlzn7e11VnVtVZ1fVTVX1+ap61JzH11TV1yaPXVlVz5rz2NFVdVFVnVpV1yd53WTZp+es01V1XFV9\ntap+WFXvqqqaPLZHVb29qq6rqm9U1fGT9bcY6FX10iQvSPIHkzP6H5ksv6aqjpjzfZ1TVe+fzH5F\nVT20qv5w8rx8q6qeNGeb+1XVGZPn6ztV9aaq2mPgjxIAtkhYA8DO86+T3D3J/9jCOicmeXySRyd5\nVJLHJjlpzuM/N9nG/ZP8UZL3JnlhksckeUKS11TVg+as/4wk5yT52SR/leS8qtpr8tjXJl+zX5LX\nJ3l/Vd13ztc+LsnXM3tm/eTNzPsbSX45ySOT/FaSX58sPzbJUybfxy8leeYWvud098ruvqa735Pk\nL5O8pbv36e6nbeZLnpbkvye5V5IvJPl4Zn+OuX9m//Liz+ase2aSO5I8OMkhSZ6U5CWT/Z7Z3Udv\naTYA2FbCGgB2nnsnua6779jCOi9I8obuvra712Y2eF805/F1SU7u7nVJPpBkRZJ3dvdN3f2lJFdm\nNsg3+lx3nztZ/08yG+WPT5LuPqe7v9vdG7r77CRfzWzIb/Td7j6tu+/o7ls3M+8p3f3D7v7nJBdm\nNqST2ch+Z3d/u7tvSHLKVp6bbfWp7v745Lk8J8l9JrNsfF5WVtX+VXVAkqcmecXkCoFrk5ya5Pk7\neB4A+DHvnwKAnef6JCuqas8txPX9knxzzv1vTpb9eBvdvX5ye2Psfn/O47cm2WfO/W9tvNHdG6rq\n2xu3V1UvTvLKJCsnq+yT2VD/qa/dgv875/Ytc/Z9v02+fiHb2habfs/XzfO87DOZY68k35tcpZ7M\nnkjY0fMAwI85Yw0AO89nktyeLV8W/d0kB865/8DJsu31gI03quouSX4+yXer6sDMXkZ+fJJ7d/f+\nSb6YpOZ8bQ/s93uTff3UHAswst9NfSuzz/mK7t5/8s89u/vhO3AfAHAnwhoAdpLuvjGz74t+1+RD\nx36mqvaqqqdU1Vsmq52V5KSquk9VrZis//6B3T6mqp49+dCwV2Q2Mj+bZO/MBuzaJKmq301y8MB+\nNvXXSf5jVd2/qvZP8upt+NrvJ/mFHTFEd38vySeSvL2q7llVd6mqg6rq13bE9gFgPsIaAHai7n57\nZi+/PimzUfutzJ41Pm+yypuSXJLk8iRXJPn8ZNn2+lCS5yW5IbPv1X725JPIr0zy9syeRf9+kkck\nuWhgP5t6b2aD9vLMfrjYxzL7AWLrt/RFE2ckedjkk8bP2+raW/fiJHfN7PvPb0hybpL7bvErAGBA\nde/Iq68AgGmpqtcleXB3v3AJzPKUJKd394FbXRkAdnHOWAMAw6rqHpPfr71nVd0/yWuz5V8zBgDL\nhrAGAHaEyuyvCrshs5eCX5XZ94sDwLLnUnAAAAAY4Iw1AAAADBDWAAAAMGDPaQ+wK1uxYkWvXLly\n2mMsez/60Y+y9957T3sM2OEc2yxnjm+WM8c3y5Vj+6d97nOfu66777O19YT1gJUrV+aSSy6Z9hjL\n3szMTFavXj3tMWCHc2yznDm+Wc4c3yxXju2fVlXfXMh6LgUHAACAAcIaAAAABghrAAAAGCCsAQAA\nYICwBgAAgAHCGgAAAAYIawAAABggrAEAAGCAsAYAAIABwhoAAAAGCGsAAAAYIKwBAABggLAGAACA\nAcIaAAAABghrAAAAGCCsAQAAYICwBgAAgAHCGgAAAAYIawAAABggrAEAAGCAsAYAAIABwhoAAAAG\nCGsAAAAYIKwBAABggLAGAACAAcIaAAAABghrAAAAGCCsAQAAYICwBgAAgAHCGgAAAAYIawAAABgg\nrAEAAGCAsAYAAIABwhoAAAAGCGsAAAAYIKwBAABggLAGAACAAcIaAAAABghrAAAAGCCsAQAAYICw\nBgAAgAHCGgAAAAYIawAAABggrAEAAGCAsAYAAIABwhoAAAAGCGsAAAAYIKwBAABggLAGAACAAcIa\nAAAABghrAAAAGCCsAQAAYICwBgAAgAHCGgAAAAYIawAAABggrAEAAGCAsAYAAIABwhoAAAAGCGsA\nAAAYIKwBAABggLAGAACAAcIaAAAABghrAAAAGCCsAQAAYICwBgAAgAHCGgAAAAYIawAAABiw57QH\nAICl5FGv/0RuvHXdtMdYHi44f9oT7Nb2XbUmN111yrTHWDb2u8deuey1T5r2GMASJawBYI4bb12X\na045ctpj7PJmZmayevXqaY+xW3vE+9Y4lneglWv8RRGweS4FBwAAgAHCGgAAAAYIawAAABggrAEA\nAGCAsAY2q6qmPQIAAMvUcvpZU1gDAADAAGENAAAAA4Q1AMA2WHvL2hx9wdG57tbrpj0KAEvEFsO6\nqvavqpdNbt+vqs5dnLHuNMMbquqIRdrX6qo6bDH2BQDsmk6//PR8/vufz+mXnT7tUQBYIrZ2xnr/\nJC9Lku7+bnf/5s4f6c66+4+6+38u0u5WJxHWAMC81t6yNh+6+kPpdM67+jxnrQFIkuy5lcdPSXJQ\nVV2a5KtJVnX3wVV1dJJnJtk7yUOSvC3JXZO8KMntSZ7a3T+oqoOSvCvJfZLckuTY7v7ypjupqv2S\nXJ7kQd29oar2TvLlJL+Q5L1JPtrd51bVNUnel+RpSfZK8tzu/nJV7ZPktCSHJukkr+/uv6mqJyV5\nfZK7Jflakt/t7pvn206S25Icl2R9Vb0wyQnd/al5Zn1pkpcmyQEHHJCZmZmtPIWMuvnmmz3PU7Ry\nzfnTHmF5u8DzuxR5zRm3XF+7z77+7Nyx/o4kyR3r78hrPvaaPO/ez5vyVJu3HP8MpulO/0/0+s1y\ntcjH9nJ5ndpaWK9JcnB3P7qqVib56JzHDk5ySJK7J7k6yau7+5CqOjXJi5O8I8l7khzX3V+tqscl\neXeSJ266k+6+cRLvv5bkwiS/keTj3b1uno9gv667f2lyifp/TvKSJK9JcmN3PyJJqupeVbUiyUlJ\n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\n89//fE6/7PRpjwIAsGQt9Iz1/kleliTd/d3u/s2dN1KemWSnhfVyd/LJJ+eMM87I4Ycfnr322iuH\nH354zjjjjLz3ve+dd/nJJ5887ZGBJWrtLWvzoas/lE7nvKvPc9YaAGAz9lzgeqckOaiqLk3y1SSr\nuvvgqjo6syG8d5KHJHlbkrsmeVGS25M8tbt/UFUHJXlXkvskuSXJsd395U13UlWHJXl6kl+rqpOS\n/Ick7+7ux1TVo5JcmuTA7v7nqvpakkdM9n16kgdONvOK7r6oqh6b5J1J7p7k1iS/293/tMn+jkxy\nUpKnJTk8yWuTrE9yY3f/6nxPRFW9NMlLk+SAAw7IzMzMAp/CxXHVVVdl/fr1d5pr/fr1uf322+dd\nftVVVy2572FTN99885KfkaVr5Zrzpz3CvGZmZpb8sX329WfnjvV3JEnuWH9HXvOx1+R5937ejx9f\nyrPvbpbqcZ4Lluhcm+GYZqGW+us3bC/H9vZbaFivSXJwdz+6qlYm+eicxw5OckhmA/bqJK/u7kOq\n6tQkL07yjiTvSXJcd3+1qh6X5N1JnrjpTrr7H6rqw0k+2t3nJklV3b2q7pnkCUkuSfKEqvp0kmu7\n+5aq+vMkp3b3p6vqgUk+nmRVki8neUJ331FVRyR5c5LnbNxXVT0rySszG/83VNUfJfn17v5OVe2/\nuSeiu98z+X5y6KGH9urVqxf4FC6OVatWZY899sjcuS688MLc7W53m3f5qlWrstS+h03NzMws+RlZ\nuq455chpj/BTVq45P6tXr17Sx/baW9bm4g9enPVZnyRZn/W5+NaL88bHvTEr7rEieV+W7Oy7nQvO\nX5LH+VI+vudTf+yYZuF2teMbFsqxvf12xIeXXdjdN3X32iQ3JvnIZPkVSVZW1T5JDktyzuSM958l\nue82bP8fkvxKkl/NbBz/amYj+1OTx49I8qeTbX84yT0n+9xvss8vJjk1ycPnbPOJSV6d5MjuvmGy\n7KIkZ1bVsUn22Ib5lpQTTzwxxxxzTC688MKsW7cuF154YY455pgce+yx8y4/8cQTpz0ysASdfvnp\n2dAb7rRsQ2/wXmsAgHks9Iz1ltw+5/aGOfc3TLZ/lyQ/7O5Hb+f2/z6zIX1gkg9lNog7ycbry+6S\n5PHdfdvcL5p8QNmF3f2syVn2mTkPfy3JLyR5aGbPgqe7j5ucTT8yyeeq6jHdff12zjw1Rx11VJLk\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f6a6d3f4190>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9IAAAF1CAYAAAAEFdKhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAGyZJREFUeJzt3X/Y5XVd5/HXO8FBkSuVMVYwHdGu\nFhbTS8jashrMVkkTsxJb3GTbcGmTItYCTYvMWGgNtVlrVrLUC1MUFUySKC/utHZ1BRx+iJkg0CYG\nMyYmgtP8eO8f58DeDvPj/sDMnHvu+/G4rvuac77ne77f99x8r/ueJ9/vOae6OwAAAMDCfMusBwAA\nAIB9iZAGAACAAUIaAAAABghpAAAAGCCkAQAAYICQBgAAgAFCGgC4n6o6saou3wv7eXtVvX4nj99V\nVYfv6TkAYISQBoA9qKr+fVVdOQ3CL1XVR6rqmbOea1e6+13d/e/2xLar6paqWrXAOR7R3V+YPm+n\n0b3NPs6qqrMe8JAAsBNCGgD2kKo6Pcmbkpyd5JAkj0/y+0mOn+Vcu1JV+816BgBYzIQ0AOwBVfWt\nSV6X5Be6+wPd/fXu3tTdf9rdvzJdZ0VVvamqbpt+vamqVkwfW11V/1BVv1pVd0zPZr+wqn60qv6u\nqv6pql49b39nVdVFVXVhVX2tqq6uqqfOe/zMqrpp+tgNVfXj8x47qar+pqreWFVfTnLWdNlfz1un\nq+qUqvp8Vd1ZVW+pqpo+9pCq+t2q2lBVN1fVK6brLzTIH1VVl05n+2RVPWmb/T65ql6e5MQkvzo9\nu/+n08fPqKovTp/7uar64fH/WgAwRkgDwJ7xb5MckOSDO1nn15J8b5KnJXlqkmckec28x//VdBuH\nJfn1JOcneWmSo5P8QJLXVtUT561/fJL3JXl0kj9JcnFV7T997Kbpc741yW8muaCqHjvvud+T5AuZ\nnDn/7R3M+/wk353ku5K8OMlzpstPTnLc9O/x9CQv3MnfOd29qrtvmbfoJdOZHpXkxu3tv7vfmuRd\nSX5nern3j1XVdyZ5RZLv7u6DpvPcMl3/rO4+a2dzAMADJaQBYM84OMmG7t68k3VOTPK67r6ju9dn\nEpP/Yd7jm5L8dndvSvKeJCuTvLm7v9bdn0lyQyYBfq+ruvui6frnZRLh35sk3f2+7r6tu7d294VJ\nPp9JuN/rtu5e092bu/ueHcx7Tnff2d1/n+SKTMI5mUT1m7v7H7r7K0nO2cX3Zlsf7O7/M/1evWve\ndndlS5IVSY6sqv27+5buvmlw3wAwTEgDwJ7x5SQrd3F586FJbp13/9bpsvu20d1bprfvjdvb5z1+\nT5JHzLv/f++90d1bk/zDvdurqp+pqnXTy7LvTHJUJmF+v+fuxD/Ou333vH0fus3zF7KthWx3p7r7\nxiSnJTkryR1V9Z6qOnTnzwKAB09IA8Ce8b+TbMzOL3O+LckT5t1//HTZA/Xt996oqm9J8rgkt1XV\nEzK5LPwVSQ7u7kcmuT5JzXtuP4j9fmm6r/vNsZvdb8bu/pPufmYm38dOcu4e2jcA3EdIA8Ae0N1f\nzeR1zW+ZvknYw6tq/6o6rqp+Z7rau5O8pqoeU1Urp+tf8CB2e3RVvWh6Fvy0TEL+E0kOzCQy1ydJ\nVf3HTM5I7y7vTfJLVXVYVT0yyRm7cdvz3Z7kvs+UrqrvrKpnTd+g7RuZnKHfuof2DQD3EdIAsId0\n9+8mOT2TNxBbn8klz69IcvF0ldcnuTLJtUmuS3L1dNkDdUmSE5J8JZPXWr9o+k7hNyT53UzOkt+e\n5ClJ/uZB7Gdb5ye5PJO/x6eT/FmSzZm8hnl3elsmr4e+s6ouzuT10eck2ZDJ5eHfluRVu3mfAHA/\n1f1gruQCABaDqjoryZO7+6WLYJbjkqzt7ifscmUA2Ac5Iw0APChV9bDp51vvV1WHJfmN7PxjvwBg\nnyakAYAHqzL56K6vZHJp92czeb03ACxJLu0GAACAAc5IAwAAwAAhDQAAAAP2m/UA+5KVK1f2qlWr\nZj3GDn3961/PgQceOOsxWOYchywWjkUWA8chi4HjkMVisR+LV1111YbufsxC1hXSA1atWpUrr7xy\n1mPs0NzcXFavXj3rMVjmHIcsFo5FFgPHIYuB45DFYrEfi1V160LXdWk3AAAADBDSAAAAMEBIAwAA\nwAAhDQAAAAOENAAAAAwQ0gAAADBASAMAAMAAIQ0AAAADhDQAAAAMENIAAAAwQEgDAADAACENAAAA\nA4Q0AAAADBDSAAAAMEBIAwAAwAAhDQAAAAOENAAAAAwQ0gAAADBASAMAAMAAIQ0AAAADhDQAAAAM\nENIAAAAwQEgDAADAACENAAAAA4Q0AAAADBDSAAAAMEBIAwAAwAAhDQAAAAOENAAAAAwQ0gAAADBA\nSAMAAMAAIQ0AAAADhDQAAAAMENIAAAAwQEgDAADAACENAAAAA4Q0AAAADBDSAAAAMEBIAwAAwAAh\nDQAAAAOENAAAAAwQ0gAAADBASAMAAMAAIQ0AAAADhDQAAAAMENIAAAAwQEgDAADAACENAAAAA4Q0\nAAAADBDSAAAAMEBIAwAAwAAhDQAAAAOENAAAAAwQ0gAAADBASAMAAMAAIQ0AAAADhDQAAAAMENIA\nAAAwQEgDAADAACENAAAAA4Q0AAAADBDSAAAAMEBIAwAAwAAhDQAAAAOENAAAAAwQ0gAAADBASAMA\nAMCA/WY9AADAA/XU37w8X71n06zH2KGDjjgzXzvznFmPwTJ34P7JZ1bPegpYWoQ0ALDP+uo9m3LL\nOc+b9Rg79JR3nLmo52N5WHXmpbMeAZYcl3YDAADAACENAAAAA4Q0AAAADBDSAAAAMEBIA7vVscce\nO+sRAABYhJbSvxOFNAAAAAwQ0gAAADBASC8Bp556ag444IAce+yxOeCAA3LqqafOeiQAYBfW370+\nJ112Ujbcs2HWowAwaJchXVWrqur67Sx/XVU9e3r7tKp6+O4aqqr+sKqO3F3b28W+Xri39rUnnHrq\nqVm7dm3OPvvsfOQjH8nZZ5+dtWvXimkAWOTWXrs2V99+ddZes3bWowAw6AGfke7uX+/uv5zePS3J\nbgvp7v657r5hd21vF16YZJ8N6fPPPz/nnntuTj/99BxwwAE5/fTTc+655+b888+f9WgAwA6sv3t9\nLrnxknQ6F994sbPSAPuY/Ra43kOq6vwk35fki0mOT/IHST6c5NDp1xVVtSHJs5O8LckxSTrJH3X3\nG7fdYFX96yTv7O5nTO+vSvKn3f2UqppL8sruvrKq7kry5iTPT3JPkuO7+/aqOiTJ2iSHTzf58939\nv6rqpUl+MclDk3wyyX/p7i3b206SJyV5QZIfqqrXJPmJ7r5pmzlfnuTlSXLIIYdkbm5ugd+yvWPj\nxo058sgjMzc3l7vuuitzc3M58sgjs3HjxkU3K8vHqjMvnfUIMHGZY3E5WOy/77Y334VfvjCbt2xO\nkmzesjmv/bPX5oSDT9jLk7Gc+N3MYrHYf2Yv1EJD+juS/HR3n1xV703yE/c+0N2/V1WnJzm2uzdU\n1dFJDuvuo5Kkqh65vQ12999W1UOr6ondfXOSE5JcuJ1VD0zyie7+tar6nSQnJ3l9kt9L8lfd/eNV\n9ZAkj6iqI6bb+f7u3lRVv5/kxCTv3N52uvv1VfWhJB/u7ot2MOdbk7w1SY455phevXr1Ar9le8eK\nFStyww035PTTT8/c3FxWr16d8847LytWrMhim5Xl45ZznjfrEeC+n4ksbavOvHRx/3d+R+433/q7\n1+dTH/hUtmRLkmRLtuRT93wqv/U9v5WVD1s5gyFZ8i671O9mFoU69/4/E/dVC720++buXje9fVWS\nVTtZ9wtJDq+qNVX13CT/vJN135tJ+CY7Dul/yeTM97b7flYmZ8XT3Vu6+6tJfjjJ0Uk+VVXrpvcP\n38V29mknn3xyzjjjjJx33nn5xje+kfPOOy9nnHFGTj755FmPBgBsx9pr12Zrb/2mZVt7q9dKA+xD\nFnpGeuO821uSPGxHK3b3V6rqqUmek+SUJC9O8rM7WP3CJO+rqg9Mntqf3846m7q75+17ZzNXknd0\n96se5Hb2GWvWrEmSvPrVr87GjRuzYsWKnHLKKfctBwAWl2vuuCabtm76pmWbtm7KujvW7eAZACw2\nuysmv5bkoCQbqmplkn/p7vdX1eeSXLCjJ3X3TVW1Jclrs/2z0Tvz0SQ/n+RN917aPV12SVW9sbvv\nqKpHJzmou29dwOz7rDVr1mTNmjUuYwSAfcBFL9juq8kA2Ifsrs+RfmuSy6rqiiSHJZmbXlp9QZLt\nnR2e78IkL83kMu8Rv5Tk2Kq6LpNLtY+cvtP3a5JcXlXXJvmLJI/dxXbek+RXqurTVfWkwRkAAABY\nZnZ5Rrq7b0ly1Lz7b9jOOmuSzL+W+OkLHWC6vTdss2z1vNuPmHf7oiQXTW/fnsk7b2+7vQuznbPb\nO9nO32Qf/vgrAAAA9q7ddUYaIElyxRVXzHoEAAAWoaX078S98oZbVfWWJN+/zeI3d/cf7439AwAA\nwO6yV0K6u39hb+wHAAAA9jSXdgMAAMAAIQ0AAAAD9sql3QAAe8qqMy+d9Qg7dNARi3s+locD95/1\nBLD0CGkAYJ91yznPm/UIOzU3d2BWv2z1rMdgmZubm5v1CLDkuLQbAAAABghpAAAAGCCkAQAAYICQ\nBgAAgAFCGgAAAAYIaQAAABggpAEAAGCAkAYAAIABQhoAAAAGCGkAAAAYIKQBAABggJAGAACAAUIa\nAAAABghpAAAAGCCkAQAAYICQBgAAgAFCGgAAAAYIaQAAABggpAEAAGCAkAYAAIABQhoAAAAGCGkA\nAAAYIKQBAABggJAGAACAAUIaAAAABghpAAAAGCCkAQAAYICQBgAAgAFCGgAAAAYIaQAAABggpAEA\nAGCAkAYAAIABQhoAAAAGCGkAAAAYIKQBAABggJAGAACAAUIaAAAABghpAAAAGCCkAQAAYICQBgAA\ngAFCGgAAAAYIaQAAABggpAEAAGCAkAYAAIABQhoAAAAGCGkAAAAYIKQBAABggJAGAACAAUIaAAAA\nBghpAAAAGCCkAQAAYICQBgAAgAFCGgAAAAYIaQAAABggpAEAAGCAkAYAAIABQhoAAAAGCGkAAAAY\nIKQBAABggJAGAACAAUIaAAAABghpAAAAGCCkAQAAYICQBgAAgAFCGgAAAAYIaQAAABggpAEAAGCA\nkAYAAIABQhoAAAAGCGkAAAAYIKQBAABggJAGAACAAUIaAAAABghpAAAAGCCkAQAAYICQBgAAgAFC\nGgAAAAYIaQAAABggpAEAAGCAkAYAAIABQhoAAAAGCGkAAAAYIKQBAABggJAGAACAAUIaAAAABghp\nAAAAGCCkAQAAYICQBgAAgAFCGgAAAAYIaQAAABggpAEAAGCAkAYAAIABQhoAAAAGCGkAAAAYIKQB\nAABggJAGAACAAUIaAAAABghpAAAAGCCkAQAAYICQBgAAgAFCGgAAAAYIaQAAABggpAEAAGCAkAYA\nAIABQhoAAAAGCGkAAAAYIKQBAABggJAGAACAAUIaAAAABghpAAAAGCCkAQAAYICQBgAAgAFCGgAA\nAAYIaQAAABggpAEAAGCAkAYAAIABQhoAAAAGCGkAAAAYIKQBAABggJAGAACAAUIaAAAABghpAAAA\nGCCkAQAAYICQBgAAgAFCGgAAAAYIaQAAABggpAEAAGCAkAYAAIABQhoAAAAGCGkAAAAYIKQBAABg\ngJAGAACAAUIaAAAABghpAAAAGCCkAQAAYICQBgAAgAFCGgAAAAbsN+sBAACWqlNvPTVfO/OcWY/B\nMnfg/slnVs96ClhahDQAwB50yznPm/UILHOrzrx01iPAkuPSbgAAABggpAEAAGCAkAYAAIABQhoA\nAAAGCGkAlqRjjz121iMALAq3nvv8WY8AS46QBgAAgAFCGgAAAAYIaQCAZWr93etz0mUnZcM9G2Y9\nCsA+ZcEhXVWrqur67Sx/XVU9e3r7tKp6+OgQVXVSVR06+ryB7Z9VVa/cU9sHANgXrb12ba6+/eqs\nvWbtrEcB2Kc86DPS3f3r3f2X07unJRkO6SQnJdljIQ0AwDdbf/f6XHLjJel0Lr7xYmelAQbsN7j+\nQ6rq/CTfl+SLSY5P8gdJPpxJCB+a5Iqq2pDk2UneluSYJJ3kj7r7jdtusKp+crrOu6rqniSnJvnl\n7n5RVR2f5D1JvjWT6L+huw+vqicleUuSxyS5O8nJ3f23VfVjSV6T5KFJvpzkxO6+fZv9nZzkRdOv\nk5OckmTzdNsv2c58L0/y8iQ55JBDMjc3N/gt23vuuuuuRT0fy4PjkMVk1ZmXznoElrmDjsii/Zl4\n4ZcvzOYtm5Mkm7dszmv/7LU54eATZjwVe8piPQ5ZXpbSvxOruxe2YtWqJDcmOaa711XVe5N8KJNg\n/nB3X1RVt0wf31BVRyc5p7t/ZPr8R3b3nTvY9lySV3b3lVW1X5K/mwbzG5L8UCZnuvdLckp3/3RV\nfXR6+/NV9T1J/lt3P6uqHpXkzu7uqvq5JEd093+tqrOS3JXkG0l+JMmLu3tjVd2W5InT2zuc717H\nHHNMX3nllQv6fs3C3NxcVq9ePesxWOYchywWVZWF/o6DPeUp73hKrnvZdbMe437W370+x33guGzc\nsvG+ZSsesiKX/cRlWfmwlTOcjD3Bz0MWi8X+78Squqq7j1nIuqOXdt/c3eumt69Ksmon634hyeFV\ntaaqnpvknxeyg+7enOSmqjoiyTOSnJfkB5P8QJKPV9UjMjkj/r6qWpfkfyZ57PTpj0vy51V1XZJf\nSfJv5m36Z5Icl+Qnu/ve3xrXZnIm/KWZnJUGAFjy1l67Nlt76zct29pbvVYaYIFGQ3rjvNtbspNL\nw7v7K0memmQuk8un/3BgPx/LJHo3JfnLJM+cfn08k5nv7O6nzfs6Yvq8NUn+R3c/Jcl/TnLAvG1e\nl0n4P27esudlcon405N8ano2HABgSbvmjmuyaeumb1q2aeumrLtj3Q6eAcB8uzscv5bkoCQbqmpl\nkn/p7vdX1eeSXLCA593r40nemeSd3b2+qg5OckiS66eXbd9cVT/V3e+rqkryXd19TSavpf7idBsv\n22Yfn87k9dwfqqrnJPnHJN/e3VdU1V8neUmSRyTZ6eXdAAD7uotecNGsRwDYp+3uz5F+a5LLquqK\nJIclmZtefn1Bklft5HlvT7K2qtZV1cOSfDKTcP7Y9PFrk1zX///FHScm+U9VdU2Sz2TypmdJclYm\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f6a6d34bfd0>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9IAAAGDCAYAAADH3iilAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3X3UnWddJ/rvj6RCgZ6ypmV1fEGC\nOC5SyttYoELRVDwoUxRER4yg0zMRFmpxRo9ox7RjRTJTWciLc9AIkxnrwQmVCm0lUJjjSdTigH2h\nL0Bw5KUcGBxIS+m0tHSSJ7/zx94ZnoanSa48708/n7Wysvd13/u6f/t+rmev/X2u6967ujsAAADA\nsXnIchcAAAAAq4kgDQAAAAMEaQAAABggSAMAAMAAQRoAAAAGCNIAAAAwQJAGAL5BVb20qj6w3HUA\nwEokSAPAIqqqn6qq66rq7qr6+6p6X1Wdvdx1HU13/3F3P28x+q6qW6tqw2L0PesY51XVHy7mMQB4\n8BKkAWCRVNUvJ3lTkn+T5LQk357k95K8cDnrOpqqWr/cNQDASiZIA8AiqKqTk7wmyS9097u6+6vd\nvb+7/6y7Xz3d56FV9aaq+sL035uq6qHTbZuq6vNV9atV9aXpbPaLquqfVNV/raovV9WvzzrexVV1\neVVdVlV3VdUNVfWUWdsvqKpPTbd9vKp+dNa286rqg1X1xqq6PcnF07ZrZu3TVfXKqvq7qvpKVb2l\nqmq6bV1V/U5V3VZVn6mq86f7HzWQV9W5VfWRqvofVfW5qrp41rb3VdX5h+1/U1W9eHr7eVX1t1V1\nZ1X9XlX9RVX97OjPCgBGCdIAsDi+J8nDkrz7CPtsTXJWkqcmeUqSZyS5cNb2fzjt41uT/Oskb0vy\nsiTfneQ5SS6qqsfN2v+FSd6Z5B8k+U9JrqiqE6bbPjV9zMlJfjPJ26vqm2c99plJPp3JzPm2B6j3\nBUmenuTJSX4iyQ9O21+e5PnT5/GPk7zoCM853b2hu2+d3v1qkp9J8qgk5yb5uao69PidSTYfelxV\nnZ7ksUl2VdWpSS5P8q+SnJLkb5M8a9Yx/rC7zztSHQBwvARpAFgcpyS5rbsPHGGflyZ5TXd/qbv3\nZRJwf3rW9v1JtnX3/iTvSHJqkjd3913d/bEkH88kgB9yfXdfPt3/DZmE8LOSpLvf2d1f6O6D3X1Z\n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\nex+UP9fZ5+PQ2H4wn4/ZNlywa7lLYKFd/fWf6Woe35fdflkOzBxIkhyYOZCL3ntRXnLKSxak75V8\nXvxOHsXVY+dnJf+s4ZCleN+9Vt8bHuvS7n/e3V+uqhOTXJvkuUk+mOTV0+0vSbKtqp6e5MeSPCXJ\nCUluSHL9XB129yeq6puq6nHd/ZlpH5fNsesjknyou7dW1euSvDzJa5P8bpK/6O4frap1SR5ZVRun\n/Ty7u/dX1e8leWmSP5qrn+5+bVVdleQ93X35A9T51iRvTZIzzzyzN23adIynjOO1Z8+eOM+r18aN\nG7Nu3br7/Qx3796djRs3Pih/rrPPx6Gx/WA+H7Pdesm5y10CC2j2a/eGC3at2vG97559ufZd12Ym\nM0mSmczk2nuvzW8987dy6omnzq/zS7Nyz8vVu/xOHsHoe5P67RX8s4ZZluJ991p9b3isS7t/sapu\nSvKhTGamH5fk01V1VlWdkuQJmQTrZye5sru/1t13Jfmzo/T7J5kE3+SBg/T/TPKe6e3rk2yY3v7+\nJL+fJN090913ZhLwvzvJtVV14/T+dxylH2ABbd26NVu2bMnu3buzf//+7N69O1u2bMnWrVuXu7Rl\nMft8HDhw4EF/PmCl237z9hzsg/drO9gHs/2m7ctUEcDqtlbfGx51RrqqNiX5gSTf0933TJddPyzJ\nO5L8RJJPJHl3d/dxfPn8ZUneWVXvStLd/Xdz7LO/u3t6e+YoNVeSS7v7X82zH+A4HfrQiFe96lXZ\nu3dvNm7cmG3btq3qD5OYD+cDVpebvnRT9h/cf7+2/Qf358Yv3bhMFQGsbmv1vdCxhMmTk9wxDdFP\nSHLWtP3dSbYmeVqSX5u2fTDJH1TVv532/YJMl0XPpbs/VVUzSS7K3LPRR/LnSX4uyZsOLe2etl1Z\nVW/s7i9V1T9IclJ3f/YI/dyV5KTBYwNHsHnz5lX/4riQDp0Ply3Aynf5j8x5pRcA87AW3xsey9Lu\nq5Osr6q9SS7JZHl3uvuOJHuTPLa7/2badm2Sq5LcnOR9SW5JcudR+r8skw8n+5PB2v9FknOq6pZM\nlmqfPv2k7wuTfKCqbk7yn5N881H6eUeSV1fVR6rq8YM1AAAA8CBz1Bnp7r4vyfMfYNsL5mh+fXdf\nXFUPT/KXeYAPG5vVx+uTvP6wtk2zbj9y1u3Lk1w+vf3FTD55+/D+Lsscs9tH6OeD8fVXAAAAHKPF\nuE74rVV1eibXUV/a3TcswjEAWMW+/pEVAGuP1zhY+xY8SHf3Tx3eVlVvyeQTvWd7c3f/x4U+PgAA\nACymJfnk6u7+haU4DgAAACy2Y/0eaQAAACCCNAAAAAxZkqXdAMCDy4YLdi13CSvOSRtX7nk5+cQT\nlrsEgFVFkAYAFtStl5y73CWsUM4LwFphaTcAAAAMEKQBAABggCANAAAAAwRpAAAAGCBIAwAAwABB\nGgAAAAYI0gAAADBAkAYAAIABgjQAAAAMEKQBAABggCANAAAAAwRpAAAAGCBIAwAAwABBGgAAAAYI\n0gAAADBAkAYAAIABgjQAAAAMEKQBAABggCANAAAAAwRpAAAAGCBIAwAAwABBGgAAAAYI0gAAADBA\nkAYAAIABgjQAAAAMEKQBAABggCANAAAAAwRpAAAAGCBIAwAAwABBGgAAAAYI0gAAADBAkAYAAIAB\ngjQAAAAMEKQBAABggCANAAAAAwRpAAAAGCBIAwAAwABBGgAAAAYI0gAAADBAkAYAAIABgjQAAAAM\nEKQBAABggCANAAAAAwRpAAAAGCBIAwAAwABBGgAAAAYI0gAAADBAkAYAAIABgjQAAAAMEKQBAABg\ngCANAAAAAwRpAAAAGCBIAwAAwABBGgAAAAYI0gAAADBAkAYAAIABgjQAAAAMEKQBAABggCANAAAA\nAwRpAAAAGCBIAwAAwABBGgAAAAYI0gAAADBAkAYAAIABgjQAAAAMEKQBAABggCANAAAAAwRpAAAA\nGCBIAwAAwABBGgAAAAYI0gAAADBAkAYAAIABgjQAAAAMEKQBAABggCANAAAAAwRpAAAAGCBIAwAA\nwABBGgAAAAYI0gAAADBAkAYAAIABgjQAAAAMEKQBAABggCANAAAAAwRpAAAAGCBIAwAAwABBGgAA\nAAYI0gAAADBAkAYAAIABgjQAAAAMEKQBAABggCANAAAAAwRpAAAAGCBIAwAAwABBGgAAAAYI0gAA\nADBAkAYAAIABgjQAAAAMEKQBAABggCANAAAAAwRpAAAAGCBIAwAAwABBGgAAAAYI0gAAADBAkAYA\nAIABgjQAAAAMEKQBAABggCANAAAAAwRpAAAAGCBIAwAAwABBGgAAAAYI0gAAADBAkAYAAIABgjQA\nAAAMEKQBAABggCANAAAAAwRpAAAAGCBIAwAAwABBGgAAAAYI0gAAADBAkAYAAIABgjQAAAAMEKQB\nAABggCANAAAAAwRpAAAAGCBIAwAAwABBGgAAAAYI0gAAADBAkAYAAIABgjQAAAAMEKQBAABggCAN\nAAAAAwRpAAAAGCBIAwAAwABBGgAAAAYI0gAAADBAkAYAAIABgjQAAAAMWL/cBQCsNE/5zQ/kznv3\nL07nV+9anH4XwUkbL8hdey9Z7jKO28knnpCbfuN5y10GALAGCdIAh7nz3v259ZJzF7zfPXv2ZNOm\nTQve72J50qUXLMp5WCobLlg9f7QAAFYXS7sBAABggCANAAAAAwRpAAAAGCBIAwAAwABBGtaYqlru\nEgBWNa+jAByNIA0AAAADBGkAAAAYIEivATt37swZZ5yRdevW5YwzzsjOnTuP2A6sPfvu2Zfzrj4v\nt91723KXAgCw5q1f7gKSpKrOS/KB7v7CIvV/cZK7u/v1i9H/ctq5c2e2bt2aHTt25Oyzz84111yT\nLVu25K//+q+za9eub2hPks2bNy9z1cBC237z9tzwxRuy/abtufCsC5e7HACANW2lzEifl+RblruI\n1Wjbtm3ZsWNHzjnnnJxwwgk555xzsmPHjrztbW+bs33btm3LXTKwwPbdsy9XfvLKdDpXfPIKs9IA\nAItsaEa6qq5I8pgkD0vy5kyC+OO7+9XT7eclObO7z6+qi5K8LMm+JJ9Lcv1cM8JV9eNJzkzyx1V1\nb5JXJfml7n5xVb0wyTuSnDw91se7+zuq6vFJ3pLk0UnuSfLy7v5EVf1wkguTfFOS25O8tLu/eNjx\nXp7kxdN/L0/yyiQHpn3/5Bz1vSLJK5LktNNOy549e0ZO2aLbu3dvZmZm7lfXzMxM7rvvvjnb9+7d\nu+Kew+HuvvvuFV/jSrfhgl3LXcKqtxhjcLHG9mW3X5YDMweSJAdmDuSi916Ul5zykgXpe7X/Lvpd\nWGJXr53zvdrHPgvLexPWKmP7+I0u7f7n3f3lqjoxybVJnpvkg0lePd3+kiTbqurpSX4syVOSnJDk\nhiTXz9Vhd19eVecn+ZXuvq6q1ie5dLr5OUk+muTp01o/PG1/a5JXdvffVdUzk/xeku9Pck2Ss7q7\nq+pnk/xqkv/z0LGmx/nfk7you++rqguSPG56+1EPUN9bp8fLmWee2Zs2bRo4XYtv48aNWbduXWbX\ntXv37jz0oQ+ds33jxo1Zac/hcHv27FnxNa50t15y7nKXsKptuGDXoozBxRjb++7Zl2vfdW1mMpMk\nmclMrr332vzWM38rp5546vw6vzSr+3fx6l1+F5bQWnrtrt9e5WOfBbeWxjfMZmwfv9Gl3b9YVTcl\n+VAmM9OPS/Lpqjqrqk5J8oRMgvWzk1zZ3V/r7ruS/NmxHqC7DyT5VFVtTPKMJG9I8r2ZhOq/qqpH\nJnlWkndW1Y1J/iDJN08f/m1J3l9Vt2QS7p84q+ufSfL8JD/e3fdN227OZCb8ZZnMSq86W7duzZYt\nW7J79+7s378/u3fvzpYtW/Lyl798zvatW7cud8nAAtp+8/Yc7IP3azvYB7P9pu3LVBEAwNp3zDPS\nVbUpyQ8k+Z7uvqeq9mSyxPsdSX4iySeSvHs6Gzzfuv4yk9C7P8n/k+QPk6zLJBw/JMlXuvupczzu\n3yV5Q3dfNa334lnbbkny1EzC9membedmEtJ/OMnWqnrSNMivGoc+OOxVr3pV9u7dm40bN2bbtm3Z\nvHlznvWsZ83ZDqwdN33ppuw/uP9+bfsP7s+NX7pxmSoCAFj7RpZ2n5zkjmmIfkKSs6bt706yNcnT\nkvzatO2DSf6gqv7t9BgvyHR59AO4K8lJs+7/VZI/SvJH3b1vOtt9WpKPToP6Z6rqn3b3O2uS2p/c\n3TdNa/xv0z7+2WHH+EiS309yVVX9YJL/nuQx3b27qq5J8pNJHpnkKwPnZEXYvHnznAH5gdqBtePy\nH7l8uUsAAHjQGVnafXWS9VW1N8klmSzvTnffkWRvksd2999M265NclUmS6ffl8ls8J1H6PsPk2yv\nqhun119/OJPg/JfT7TcnuaW7e3r/pUm2TJeZfyzJC6ftF2ey5Pv6JN/wsbXdfU2SX0myK8kpSd4+\nXQb+kSS/292rLkQDAACwtI55Rnp6XfHzH2DbC+Zofn13X1xVD88kEM/5YWPTx/9pkj89rPmhs7a/\n4rD9P5Pkh+bo58okV87RfvGs2+9P8v7p3bMfqCYAAACYy+indo94a1Wdnsl11Jd29w2LeCxg6usL\nNwA4Hl5HATiaRQvS3f1Th7dV1Vsy+UTv2d7c3f9xseoAAACAhbSYM9LfoLt/YSmPBwAAAAtt9Huk\nAQAA4EFNkAYAAIABS7q0G2C12HDBrsXp+OpF6ncRnLRxEc/DEjj5xBOWuwQAYI0SpAEOc+sl5y5K\nv3v27MmmTZsWpe/FsTjnAQBgtbO0GwAAAAYI0gAAADBAkAYAAIABgjQAAAAMEKQBAABggCANAAAA\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f6a6d2a2c10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for stat in stats:\n",
" fig, ax = plt.subplots(figsize=(16, 6))\n",
" cols = [col for col in box_data.columns if stat in col]\n",
" box_data.boxplot(ax=ax, column=cols, vert=False, showmeans=True)\n",
"\n",
" ax.set_title(\"Comparing '{}'\".format(stat))\n",
" if stat in [\"time\", \"avg\"]:\n",
" ax.set_xlabel(\"Time (ms)\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.12"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment