Path: csiph.com!usenet.pasdenom.info!news.franciliens.net!dedibox.gegeweb.org!gegeweb.eu!nntpfeed.proxad.net!proxad.net!feeder1-2.proxad.net!usenet-fr.net!nerim.net!novso.com!news2.euro.net!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.009 X-Spam-Evidence: '*H*': 0.98; '*S*': 0.00; '(especially': 0.07; 'subject:code': 0.07; 'received:80.91': 0.09; 'received:80.91.229': 0.09; 'received:gmane.org': 0.09; 'received:list': 0.09; 'subject:How': 0.10; 'changes': 0.15; '"from': 0.16; '10000000': 0.16; 'code?': 0.16; 'escribi\xc3\xb3:': 0.16; 'from:addr:behnel.de': 0.16; 'from:addr:stefan_ml': 0.16; 'from:name:stefan behnel': 0.16; 'received:80.91.229.3': 0.16; 'received:plane.gmane.org': 0.16; 'subject:make': 0.16; 'stefan': 0.19; 'import': 0.22; 'header :User-Agent:1': 0.23; 'math': 0.24; 'header:X-Complaints-To:1': 0.27; 'header:In-Reply-To:1': 0.27; 'function': 0.29; "i'm": 0.30; 'code': 0.31; "d'aprano": 0.31; 'steven': 0.31; 'received:84': 0.35; 'subject:?': 0.36; 'sometimes': 0.38; 'to:addr:python-list': 0.38; 'subject:can': 0.39; 'sure': 0.39; 'to:addr:python.org': 0.39; 'received:org': 0.40; 'how': 0.40; 'even': 0.60; 'removing': 0.60; 'such': 0.63; 'cut': 0.74; 'subject:this': 0.83; 'julio': 0.84; 'received:arcor-ip.net': 0.84; 'received:pools.arcor- ip.net': 0.84; 'profile.': 0.91; '2013': 0.98 X-Injected-Via-Gmane: http://gmane.org/ To: python-list@python.org From: Stefan Behnel Subject: Re: How can I make this piece of code even faster? Date: Sun, 21 Jul 2013 14:49:44 +0200 References: <6bf4d298-b425-4357-9c1a-192e6e6cd9f0@googlegroups.com> <9a207133-1f52-414a-bbbd-581bcee8dc93@googlegroups.com> <51ebb88e$0$29971$c3e8da3$5496439d@news.astraweb.com> <2ff99afd-b734-417f-bbc2-65cf8cc0858e@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Gmane-NNTP-Posting-Host: dslb-084-056-019-021.pools.arcor-ip.net User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130623 Thunderbird/17.0.7 In-Reply-To: <2ff99afd-b734-417f-bbc2-65cf8cc0858e@googlegroups.com> X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 21 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1374410998 news.xs4all.nl 15937 [2001:888:2000:d::a6]:39953 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:51010 pablobarhamalzas@gmail.com, 21.07.2013 12:48: > El domingo, 21 de julio de 2013 12:31:42 UTC+2, Steven D'Aprano escribió: >> [steve@ando ~]$ python3.3 -m timeit -s "x = 2.357e7" "x**0.5" >> 1000000 loops, best of 3: 0.319 usec per loop >> [steve@ando ~]$ python3.3 -m timeit -s "x = 2.357e7" -s "from math import >> sqrt" "sqrt(x)" >> 10000000 loops, best of 3: 0.172 usec per loop >> >> How exactly are you timing the code? > > I'm timing the whole program with cProfile. Removing math.sqrt() from a function and using **(1/2) instead cut the execution time for a significant amount (~0.035 to ~0.020). With or without the profiler running? Note that profiling will slow down your code (especially function calls), often significantly and sometimes even in such an unbalanced way that it visibly changes its execution profile. Always make sure you validate your code changes with benchmarks, outside of the profiler. Stefan