diff --git a/benchmarks/palindrome_timeit.ipynb b/benchmarks/palindrome_timeit.ipynb new file mode 100644 index 0000000..7893bb2 --- /dev/null +++ b/benchmarks/palindrome_timeit.ipynb @@ -0,0 +1,147 @@ +{ + "metadata": { + "name": "", + "signature": "sha256:842cb7ae4f520376ff820e7bcd278db91a026ac1fa159ca6e8a4b38296bc10f5" + }, + "nbformat": 3, + "nbformat_minor": 0, + "worksheets": [ + { + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Sebastian Raschka 04/2014\n", + "\n", + "#Timing different Implementations of palindrome functions" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "import re\n", + "import timeit\n", + "\n", + "# All functions return True if an input string is a palindrome. Else returns False.\n", + "\n", + "\n", + "\n", + "####\n", + "#### case-insensitive ignoring punctuation characters\n", + "####\n", + "\n", + "def palindrome_short(my_str):\n", + " stripped_str = \"\".join(l.lower() for l in my_str if l.isalpha())\n", + " return stripped_str == stripped_str[::-1]\n", + "\n", + "def palindrome_regex(my_str):\n", + " return re.sub('\\W', '', my_str.lower()) == re.sub('\\W', '', my_str[::-1].lower())\n", + "\n", + "####\n", + "#### functions considering all characters (case-sensitive)\n", + "####\n", + "\n", + "def palindrome_reverse1(my_str):\n", + " return my_str == my_str[::-1]\n", + "\n", + "def palindrome_reverse2(my_str):\n", + " return my_str == ''.join(reversed(my_str))\n", + "\n", + "def palindrome_recurs(my_str):\n", + " if len(my_str) < 2:\n", + " return True\n", + " if my_str[0] != my_str[-1]:\n", + " return False\n", + " return palindrome(my_str[1:-1])\n" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 6 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "test_str = \"Go hang a salami. I'm a lasagna hog.\"\n", + "\n", + "print('case-insensitive functions ignoring punctuation characters')\n", + "%timeit palindrome_short(test_str)\n", + "%timeit palindrome_regex(test_str)\n", + "\n", + "print('\\n\\nfunctions considering all characters (case-sensitive)')\n", + "%timeit palindrome_reverse1(test_str)\n", + "%timeit palindrome_reverse2(test_str)\n", + "%timeit palindrome_recurs(test_str)\n" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "case-insensitive functions ignoring punctuation characters\n", + "100000 loops, best of 3: 15.4 \u00b5s per loop" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "10000 loops, best of 3: 20.3 \u00b5s per loop" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "\n", + "\n", + "functions considering all characters (case-sensitive)\n", + "1000000 loops, best of 3: 508 ns per loop" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "100000 loops, best of 3: 3 \u00b5s per loop" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n", + "1000000 loops, best of 3: 509 ns per loop" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "\n" + ] + } + ], + "prompt_number": 7 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [], + "language": "python", + "metadata": {}, + "outputs": [] + } + ], + "metadata": {} + } + ] +} \ No newline at end of file