Skip to content

Instantly share code, notes, and snippets.

@btel
Created June 7, 2013 14:32
Show Gist options
  • Save btel/5729671 to your computer and use it in GitHub Desktop.
Save btel/5729671 to your computer and use it in GitHub Desktop.
{
"metadata": {
"name": "io_perf_test"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": "import numpy\nfrom os import path\nsize = lambda x: \"%.2f MB\" % (x/1.e6,)",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": "def setup_file(target_dir):\n tmp = path.join(target_dir, 'test.npz')\n print \"Generating: \" + tmp\n L = (1 << 28) + 1e5\n a = numpy.random.randint(100, size=L)\\\n\n print \"Size: %s\" % size(a.size * a.itemsize)\n print \"Saving\"\n numpy.savez(tmp, a=a)\n \n return tmp",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": "def test_read(target_file):\n import numpy.random\n import timeit\n\n tmp = target_file\n\n times = {}\n\n for i in xrange(15, 29):\n print \"Test: %i\" % i \n def setup():\n numpy.lib.format.BUFFER_SIZE = 2 ** i\n def run():\n a = numpy.load(tmp)[\"a\"]\n\n times[i] = timeit.repeat(\n stmt=run,\n setup=setup,\n repeat=1,\n number=3)\n\n return times",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": "local_file = setup_file(\"/home/bartosz/temp/\")",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Generating: /home/bartosz/temp/test.npz\nSize: 2148.28 MB"
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\nSaving\n"
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": "local_times = test_read(local_file)",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": "Test: 15\nTest: 16"
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\nTest: 17"
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\nTest: 18"
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\nTest: 19"
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\nTest: 20"
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\nTest: 21"
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\nTest: 22"
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\nTest: 23"
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\nTest: 24"
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\nTest: 25"
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\nTest: 26"
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\nTest: 27"
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\nTest: 28"
},
{
"output_type": "stream",
"stream": "stdout",
"text": "\n"
}
],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": "plt.plot([i for i, t in local_times.items()], [t for i, t in local_times.items()])\nplt.xlabel(\"log2(read buffer size)\")\nplt.ylabel(\"Seconds per 3x2gb read.\")",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 6,
"text": "<matplotlib.text.Text at 0x3975110>"
},
{
"output_type": "display_data",
"png": "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\nDYCsrCx8fX0B6N69O0eOHCEkJISJEycydepUZsyYQZcuXQD46quviIiIICQkhKeffpr8/HxA32mM\nGTOG4OBgNm/eXOj606ZNo2XLlgQFBTFo0CAA5s2bx6hRowAIDg4mJCSEkJAQqlSpQmJiIhcvXiQ2\nNpaIiAhCQ0NZuXKl+fUeeOABFi9eXIp/SeFSbL5iQbg1T09PpZRSS5YsUd26dVP5+fnq+PHj6t57\n71VHjx5VixcvVr169VJKKXXs2DFVo0YNtXTp0kKvkZOTo0JDQ9WPP/6olFLq66+/ViNHjjT/+mOP\nPaaio6NVfn6+Ukqp+++/X+3du1cppdTmzZvV/fffr5RShRaEffbZZ+rFF19USik1atQo9dZbbyml\nlPruu++UyWQqcvGSyWRSCxYsUEopNXHiRHOG68+3PnnypGrYsKFSSm+sd/02G3FxcWrKlClKKaV2\n796toqOj1bVr15RSSj3zzDPqiy++MF9n8eLFRf593n333eatigv225k3b16hvw+llFq5cqXq2LGj\nys3NVePGjVNfffWV+e/Az89PXbp0SSmlty4fMGBAkdcSrs8hzwQWrufHH39k0KBBmEwm6tatS6dO\nnUhJSeGnn35iwIABAHh5edG5c+ebnvvss8/SqVMnOnToAEBmZib169cv9Hv69++PyWTiwoULJCUl\n0b9/f/Ov5eTkAPrOYcCAARw7doycnBwaNWoEQGJiIsuXLwegV69eRW5PDlCuXDkGDhwIwODBg+nb\nt+8t/8yqiDuJgsd++OEHtm3bRuvWrQG4fPky9erVA6B8+fL069evyNds1aoVgwYNonfv3sVucbF3\n715efvll4uPjqVChAuvWrWPVqlV8+OGHAFy9epXMzEz8/f2pX78+GRkZt/xzCNclBUDYhclkKrZr\n5cbHr/9+woQJZGdn89lnn93yOVWqVAF0l1L16tVJS0u76TqjRo1izJgxPPjggyQkJBQaRC4uW3GU\nUphMJgAqVKhg7r65cuVKiV9j2LBhvPPOOzc97uHhYX7tG3333Xds2rSJVatWMWnSJHbu3Fko+4UL\nFxg4cCCzZs0qND6ybNkymjZtess/h3A/MgYg7CIyMpKFCxeSn5/PyZMn2bRpExEREXTo0IGlS5ei\nlOL48ePEx8ebG6RZs2axbt06FixYUOi1GjRowLFjx4q8TtWqVfH19WXJkiWAbuB27NgBwLlz57j7\n7rsB3W9eoGPHjuZrrFmzhtOnTxf52vn5+eb+8gULFhAZGQnoWUNbt24FMF/Xki5durBkyRJOnjwJ\n6GMsMzMzb/kcpRSZmZlERUXx7rvvcvbsWS5cuFDo98TGxjJ8+HDz3RJAjx49Ch15eH1xPHr0KA0a\nNChRZuF6pAAImypozPv06UOrVq0ICgqiS5cufPDBB9StW5d+/frh7e1NixYtGDJkCKGhoVSrVg2A\nZ555hhMnTtCuXTtCQkJ4++23AejQoQOpqalFXgdg/vz5zJ49m+DgYAICAsyDnnFxcfTv35/WrVtT\np04d83PGjx/Ppk2bCAgIYPny5cU2iHfeeSfJyckEBgYSHx/Pm2++CcCYMWOYMWMGoaGhZGdnF8py\n46frgu+bN2/O22+/Tffu3QkKCqJ79+7molbcJ/K8vDyGDBlCq1atCA0N5R//+AfVqlXDZDJhMpnI\nzMxk6dKlzJkzxzwQnJqayhtvvEFubi6tWrUiICCA8ePHm18zOTmZjh07FvvvJ1ybTAMVhrt48SJ3\n3nkn2dnZRERE8PPPP1uclnj//fczf/78m8YCROnINFD3JncAwnAPPvggISEhdOzYkTfffLNEjdGY\nMWP45JNP7JDOde3YsYMmTZpI4+/G5A5ACCHclNwBCCGEm5ICIIQQbkoKgBBCuCkpAEII4aakAAgh\nhJuSAiCEEG7q/wN7OXKOhW2u6AAAAABJRU5ErkJggg==\n"
}
],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": "",
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment