[IPython-dev] [jdc at uwo.ca: Bug#256781: ipython: funny behaviour of timeit.timeit and timeit.repeat]

Jack Moffitt jack at xiph.org
Thu Jul 1 09:56:54 CDT 2004


The following bug came into Debian a few days back, and I'd though I'd
forward it here to see if you had any ideas on what it was.  The user
made a second followup which you can find here:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=256781

jack.

----- Forwarded message from Dan Christensen <jdc at uwo.ca> -----

Subject: Bug#256781: ipython: funny behaviour of timeit.timeit and
	timeit.repeat
From: Dan Christensen <jdc at uwo.ca>
To: Debian Bug Tracking System <submit at bugs.debian.org>
Date: Mon, 28 Jun 2004 21:48:50 -0400
Resent-Sender: Debian BTS <debbugs at bugs.debian.org>

Package: ipython
Version: 0.6.0-1
Severity: normal

[I manually changed the input prompts to >>> and removed the
output labels.]

On a 2.0GHz P4 laptop (speedstep disabled) running mostly testing:

Python 2.3.4 (#2, May 29 2004, 03:31:27) 
Type "copyright", "credits" or "license" for more information.

IPython 0.6.0 -- An enhanced Interactive Python.

>>> from timeit import *
>>> from time import *
>>> t=Timer("pass","pass",timer=time)
>>> t.timeit(1000000)
0.15831089019775391
>>> t.repeat(1,1000000)
[0.079621076583862305]

Note the factor of two difference!  It's consistent:

>>> t.timeit(1000000)
0.14923691749572754
>>> t.repeat(1,1000000)
[0.080674886703491211]
>>> for i in range(3):
...     t.timeit(1000000)
0.15053701400756836
0.15190696716308594
0.15034103393554688
>>> t.repeat(3,1000000)
[0.080902099609375,
 0.081040859222412109,
 0.080629110336303711]

And it happens with timer=clock too:

>>> t2=Timer("pass","pass",timer=clock)
>>> t2.timeit(1000000)
0.11000000000000032
>>> t2.repeat(3,1000000)
[0.079999999999999627, 0.080000000000000071, 0.090000000000000302]

It also happens with statements other than "pass".  The ratio is
different then, and sometimes the repeat version takes longer
(in one case, consistently 20% longer).

This doesn't happen when the above is run in plain python.

And it doesn't happen using ipython on a dual Xeon machine I have
access to, which also runs Debian testing.

Any ideas what's up?  I've looked at timeit.py and can't see how this
is possible...  Let me know if I can help debug it.

Dan


-- System Information:
Debian Release: testing/unstable
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Kernel: Linux 2.4.26
Locale: LANG=C, LC_CTYPE=C

Versions of packages ipython depends on:
ii  python                        2.3.4-1    An interactive high-level object-o

-- no debconf information

----- End forwarded message -----




More information about the IPython-dev mailing list