Skip to content

Instantly share code, notes, and snippets.

@wesm
Created October 16, 2017 01:24
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save wesm/5dd0d5e6577969f2d1cad35911d4865f to your computer and use it in GitHub Desktop.
Save wesm/5dd0d5e6577969f2d1cad35911d4865f to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import gc\n",
"import os\n",
"import time\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"import feather"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def generate_floats(n, pct_null, repeats=1):\n",
" nunique = int(n / repeats)\n",
" unique_values = np.random.randn(nunique)\n",
" \n",
" num_nulls = int(nunique * pct_null)\n",
" null_indices = np.random.choice(nunique, size=num_nulls, replace=False)\n",
" unique_values[null_indices] = np.nan\n",
" \n",
" return unique_values.repeat(repeats)\n",
"\n",
"def generate_data(nrows, ncols, pct_null=0.1, repeats=1, dtype='float64'):\n",
" type_ = np.dtype('float64')\n",
" \n",
" data = {\n",
" 'c' + str(i): generate_floats(nrows, pct_null, repeats)\n",
" for i in range(ncols)\n",
" }\n",
" return pd.DataFrame(data)\n",
"\n",
" \n",
"MEGABYTE = 1 << 20\n",
"DATA_SIZE = 512 * MEGABYTE"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.17156705660745503\n",
"0.17317785640479996\n",
"0.17500421280274167\n"
]
}
],
"source": [
"def get_timing(f, path, niter):\n",
" start = time.clock_gettime(time.CLOCK_MONOTONIC)\n",
" for i in range(niter):\n",
" f(path)\n",
" elapsed = time.clock_gettime(time.CLOCK_MONOTONIC) - start\n",
" return elapsed\n",
"\n",
"NITER = 5\n",
"\n",
"NCOLS = [10, 50, 500]\n",
"\n",
"results = {}\n",
"for ncols in NCOLS:\n",
" NROWS = DATA_SIZE / ncols / np.dtype('float64').itemsize\n",
" df = generate_data(NROWS, ncols)\n",
"\n",
" path = 'test.feather'\n",
"\n",
" feather.write_dataframe(df, path)\n",
" \n",
" # prime the OS cache\n",
" feather.read_dataframe(path)\n",
" \n",
" gc.disable()\n",
" elapsed = get_timing(feather.read_dataframe, path, NITER) / NITER\n",
" gc.enable()\n",
" gc.collect()\n",
" print(elapsed)\n",
" results[ncols] = elapsed"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{10: 0.853481687803287, 50: 0.3072799387970008, 500: 0.7237378041958437}"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Feather 0.3.1\n",
"results = {10: 0.853481687803287, 50: 0.3072799387970008, 500: 0.7237378041958437}"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{10: 0.17156705660745503, 50: 0.17317785640479996, 500: 0.17500421280274167}"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Feather 0.4.0\n",
"results = {10: 0.17156705660745503, 50: 0.17317785640479996, 500: 0.17500421280274167}"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"results = {\n",
" 'Feather 0.4.0': {10: 0.17156705660745503, 50: 0.17317785640479996, 500: 0.17500421280274167},\n",
" 'Feather 0.3.1': {10: 0.853481687803287, 50: 0.3072799387970008, 500: 0.7237378041958437}\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"results = pd.DataFrame(results)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAskAAAF1CAYAAAAa1Xd+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3X20XWV9L/rvj4BE3oIieMBQg0VB\neUsxIB7GPdBSjYBGzy315aYX9PpSsJXhrZdRCnYczj2nyrntrW+tgq0g9JwqyC2EnmLFKkjlAIUA\nckDUgA2SgBBQIqAgwef+sVbizpOdZIWd7L0Dn88Ye+w155rzWb/5zLX3/u5nPXOtaq0FAAD4pW2m\nugAAAJhuhGQAAOgIyQAA0BGSAQCgIyQDAEBHSAYAgI6QDKSqzqiqv57qOqZaVc2pqlZV2051LVtS\nVX20qj44wnZLq+o3J6OmZ6qqHquqlz2D/f5zVT1UVT/cEnVtQh0vrqo7q2r7qawDWJeQDM8BwyCx\n+usXVfWzMcsLW2sfaa29ZxLq2KpDaFVdXVVPjOm77465b8+quryq7hse45xu3z+rqiVV9WhVfaeq\nTtzA4xw9bOPvuvWHDNdfPWZdq6rHh/U8VFVfqKpdN9D27klOTHLuJnfABA1r3Xdzttla26m19v1N\nrGPvJB9K8qrW2r95po89PE/Lnun+SdJaeyDJVUneN5F2gM1PSIbngGGQ2Km1tlOSHyR505h1/22q\n63umpihs//6YvttvzPpfJPnHJL+1nv0eT/KmJLOSnJTkE1X1bzfwOCuS/Nuq2m3MupOSfG+cbQ8Z\nntuXJXlBkrM20O47k1zRWvvZBrbZrDbHedrM5/qlSR5urT24GdvcZGOO6b8l+d2prAVYl5AMpKrO\nqqr/Ory9erT3XVV1b1X9uKpOrqrDquq2qnqkqv6i2///GL5k/OOq+kpVvXQ9D3XN8Psjw5HP11bV\nNlX14aq6p6oerKoLq2rWeuo8uqqWVdUfDl8mP3+4/o1Vdeuwtv9RVQeP2ef0qrp7OIL77ar692Pu\nmzEc4X2oqr6f5Phn2oettQdaa59OcuN67v8PrbXvtNZ+0Vq7Ick/J3ntBpr8eZLLkrx9da1J3ppB\noFpfDT9JcnmSV22g3WOTfGP1QlW9qKr++7DvflRV/1xVY/82zB2e95VVdVFVzRyz73ur6q7hfpdX\n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\n6JhuAQAAHSEZAAA6QjIAAHSEZAAA6KzvY18n1Yte9KI2Z86cqS4DAIBnucWLFz/UWtt9Y9tNi5A8\nZ86c3HTTTVNdBgAAz3JVNdIH95huAQAAHSEZAAA6QjIAAHSmxZxkAICt1VNPPZVly5bliSd8svh0\nMnPmzMyePTvbbbfdM9pfSAYAmIBly5Zl5513zpw5c1JVU10OSVprefjhh7Ns2bLss88+z6gN0y0A\nACbgiSeeyG677SYgTyNVld12221Co/tCMgDABAnI089Ez4mQDACwlZsxY0bmzp275mvp0qWb3MYj\njzyST3/602uWr7766rzxjW/cbDW21nLqqadm3333zcEHH5ybb7553O3e8IY35JBDDskBBxyQk08+\nOU8//fQ623znO9/Ja1/72my//fb5sz/7s81W41jmJAMAbEZzTv+Hzdre0rOP3+g2z3/+83PrrbdO\n6HFWh+T3v//9E2pntVWrVmXbbX8ZNb/85S9nyZIlWbJkSW644YaccsopueGGG9bZ7+KLL84uu+yS\n1lpOOOGEfOlLX8rb3/72tbZ54QtfmE9+8pO57LLLNkut4zGSDADwLPT000/ntNNOy2GHHZaDDz44\n5557bpLkscceyzHHHJNDDz00Bx10UBYtWpQkOf3003P33Xdn7ty5Oe2009Zse8IJJ2T//ffPwoUL\n01pLkixevDhHHXVUXv3qV2f+/Pm5//77kyRHH310zjjjjBx11FH5xCc+sVY9ixYtyoknnpiqyhFH\nHJFHHnlkzX5j7bLLLkkGIfvnP//5uNMm9thjjxx22GHP+J0rRmEkGQBgK/ezn/0sc+fOTZLss88+\nufTSS/O5z30us2bNyo033pgnn3wyRx55ZF7/+tdn7733zqWXXppddtklDz30UI444ogsWLAgZ599\ndm6//fY1I9JXX311brnlltxxxx3Za6+9cuSRR+baa6/Na17zmnzgAx/IokWLsvvuu+eiiy7KmWee\nmfPOOy/JYET6G9/4xjo1Ll++PHvvvfea5dmzZ2f58uXZc88919l2/vz5+Zd/+Zcce+yxOeGEE7ZE\nl22UkAwAsJUbb7rFlVdemdtuuy2XXHJJkmTlypVZsmRJZs+enTPOOCPXXHNNttlmmyxfvjwPPPDA\nuO0efvjhmT17dpKsmeu866675vbbb8/rXve6JIMR67FB921ve9u4ba0ehR5rfRfXfeUrX8kTTzyR\nhQsX5utf//qax5pMQjIAwLNQay2f+tSnMn/+/LXWf/7zn8+KFSuyePHibLfddpkzZ8563ypt++23\nX3N7xowZWbVqVVprOeCAA3LdddeNu8+OO+447vrZs2fn3nvvXbO8bNmy7LXXXuutf+bMmVmwYEEW\nLVo0JSHZnGQAgGeh+fPn5zOf+UyeeuqpJMn3vve9PP7441m5cmX22GOPbLfddrnqqqtyzz33JEl2\n3nnnPProoxttd7/99suKFSvWhOSnnnoqd9xxx0b3W7BgQS688MK01nL99ddn1qxZ60y1eOyxx9bM\nU161alWuuOKK7L///pt03JuLkWQAgGeh97znPVm6dGkOPfTQtNay++6757LLLsvChQvzpje9KfPm\nzcvcuXPXhNDddtstRx55ZA488MAce+yxOf748d9V43nPe14uueSSnHrqqVm5cmVWrVqVD37wgzng\ngAM2WM9xxx2XK664Ivvuu2922GGHnH/++Wvumzt3bm699dY8/vjjWbBgQZ588sk8/fTT+Y3f+I2c\nfPLJSZJzzjknSXLyySfnhz/8YebNm5ef/OQn2WabbfLxj3883/72t9dc9Lc51HjzQybbvHnz2k03\n3TTVZQAAbLI777wzr3zlK6e6DMYx3rmpqsWttXkb29d0CwAA6AjJAADQEZIBAKAjJAMAQEdIBgCA\njpAMAAAdIRkAYCs3Y8aMzJ07d83X0qVLN7mNRx55JJ/+9KfXLF999dV54xvfuNlqbK3l1FNPzb77\n7puDDz44N9988wa3X7BgQQ488MDN0tYz4cNEAAA2p7Nmbeb2Vm50k+c///m59dZbJ/Qwq0Py+9//\n/gm1s9qqVauy7ba/jJpf/vKXs2TJkixZsiQ33HBDTjnllNxwww3j7vt3f/d32Wmnndbb9qa09UwZ\nSQYAeBZ6+umnc9ppp+Wwww7LwQcfnHPPPTfJ4KOfjznmmBx66KE56KCDsmjRoiTJ6aefnrvvvjtz\n587NaaedtmbbE044Ifvvv38WLlyY1R9Ct3jx4hx11FF59atfnfnz56/5KOmjjz46Z5xxRo466qh8\n4hOfWKueRYsW5cQTT0xV5YgjjsgjjzyyZr+xHnvssfz5n/95PvzhD6/32EZtayKmx0jyfbds/v+6\n2DqN8N8yALC2n/3sZ5k7d26SZJ999smll16az33uc5k1a1ZuvPHGPPnkkznyyCPz+te/PnvvvXcu\nvfTS7LLLLnnooYdyxBFHZMGCBTn77LNz++23rxmRvvrqq3PLLbfkjjvuyF577ZUjjzwy1157bV7z\nmtfkAx/4QBYtWpTdd989F110Uc4888ycd955SQYj0t/4xjfWqXH58uXZe++91yzPnj07y5cvz557\n7rnWdn/8x3+cD33oQ9lhhx3We7yjtjUR0yMkAwDwjI033eLKK6/MbbfdlksuuSRJsnLlyixZsiSz\nZ8/OGWeckWuuuSbbbLNNli9fngceeGDcdg8//PDMnj07SdbMdd51111z++2353Wve12SwYj12HD6\ntre9bdy2Vo9Cj1VVay3feuutueuuu/Kxj31sg/OqR2lrooRkAIBnodZaPvWpT2X+/Plrrf/85z+f\nFStWZPHixdluu+0yZ86cPPHEE+O2sf3226+5PWPGjKxatSqttRxwwAG57rrrxt1nxx13HHf97Nmz\nc++9965ZXrZsWfbaa6+1trnuuuuyePHizJkzJ6tWrcqDDz6Yo48+OldfffUmtzVR5iQDADwLzZ8/\nP5/5zGfy1FNPJUm+973v5fHHH8/KlSuzxx57ZLvttstVV12Ve+65J0my884759FHH91ou/vtt19W\nrFixJiQ/9dRTueOOOza634IFC3LhhRemtZbrr78+s2bNWmd6xCmnnJL77rsvS5cuzTe/+c284hWv\nWCcgj9rWRBlJBgB4FnrPe96TpUuX5tBDD01rLbvvvnsuu+yyLFy4MG9605syb968zJ07N/vvv3+S\nZLfddsuRRx6ZAw88MMcee2yOP/74cdt93vOel0suuSSnnnpqVq5cmVWrVuWDH/xgDjjggA3Wc9xx\nx+WKK67Ivvvumx122CHnn3/+mvvmzp270XfnOOecc5IkJ5988gbb2lxqvDkdk23eXjPaTe9b/9t8\n8Bziwj0AtjJ33nlnXvnKV051GYxjvHNTVYtba/M2tq/pFgAA0BGSAQCgIyQDAEBHSAYAmKDpcI0X\na5voORGSAQAmYObMmXn44YcF5WmktZaHH344M2fOfMZteAs4AIAJmD17dpYtW5YVK1ZMdSmMMXPm\nzDWfFvhMCMkAABOw3XbbZZ999pnqMtjMTLcAAICOkAwAAB0hGQAAOkIyAAB0hGQAAOgIyQAA0BGS\nAQCgIyQDAEBHSAYAgI6QDAAAHSEZAAA6I4XkqlpaVf+zqm6tqpuG615YVV+tqiXD7y8Yrq+q+mRV\n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\nvuq2/0CS86a67unaVxnMTT5lePtVSZZOdd1b09dkjiQfnuSu1tr3W2s/T/LFJG/utnlzkguGty9J\nckxV1STWOB1stJ9aa0tba7cl+cVUFDiNjNJXV7XWfjpcvD7J7EmucboYpa9+MmZxxyTP1QsWRvld\nlST/Kcn/k+SJySxuGhm1nxiAUSeFAAADYklEQVStr96b5C9baz9Oktbag5Nc43Sxqc+rdyT5wqRU\nNv2M0lctyS7D27OS3DeJ9W31JjMkvyTJvWOWlw3XjbtNa21VkpVJdpuU6qaPUfqJgU3tq3cn+fIW\nrWj6Gqmvqur3quruDMLfqZNU23Sz0b6qql9Lsndr7b9PZmHTzKg/f781fJn3kqrae3JKm3ZG6atX\nJHlFVV1bVddX1RsmrbrpZeTf68Ppc/sk+fok1DUdjdJXZyX5napaluSKDEbeGdFkhuTxRoT7kapR\ntnm20wejG7mvqup3ksxL8qdbtKLpa6S+aq39ZWvtV5P8YZIPb/GqpqcN9lVVbZPkY0k+NGkVTU+j\nPKf+Psmc1trBSf4pv3yl8LlmlL7aNoMpF0dnMDr611W16xauazralL+Bb09ySWvt6S1Yz3Q2Sl+9\nI8nnW2uzkxyX5G+Gv8MYwWR21LIkY0cRZmfdYf8121TVthm8NPCjSalu+hilnxgYqa+q6jeTnJlk\nQWvtyUmqbbrZ1OfVF5O8ZYtWNH1trK92TnJgkqurammSI5Jc/hy8eG+jz6nW2sNjfub+KsmrJ6m2\n6WbUv3+LWmtPtdb+Ncl3MwjNzzWb8rvq7XnuTrVIRuurdye5OElaa9clmZnkRZNS3bPAZIbkG5O8\nvKr2qarnZfDkvrzb5vIkJw1vn5Dk62042/w5ZJR+YmCjfTV8WfzcDALyc3WOXzJaX439g3x8kiWT\nWN90ssG+aq2tbK29qLU2p7U2J4O57gtaazdNTblTZpTn1J5jFhckuXMS65tORvm9flkGFxqnql6U\nwfSL709qldPDSH8Dq2q/JC9Ict0k1zedjNJXP0hyTJJU1SszCMkrJrXKrdikheThHOPfT/KVDH5R\nXtxau6Oq/u+qWjDc7HNJdququ5L8QZL1vvXSs9Uo/VRVhw3nF/12knOr6o6pq3jqjPic+tMkOyX5\n0vDtgp6T/3CM2Fe/P3zrqVsz+Pk7aT3NPauN2FfPeSP206nD59S3Mpjj/s6pqXZqjdhXX0nycFV9\nO8lVSU5rrT08NRVPnU34+XtHki8+BwfS1hixrz6U5L3Dn8EvJHnnc7nPNpVP3AMAgI7J2wAA0BGS\nAQCgIyQDAEBHSAYAgI6QDAAAHSEZAAA6QjIAAHSEZAAA6Pz/Q7bzOt7wXokAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fb5706cb828>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"results.plot.barh(figsize=(12, 6))\n",
"plt.title('Time to read 512 MB (shorter is faster)')\n",
"plt.savefig('feather-perf.png')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment