while playing about with inheriting from list to be able to cache macro
properties i noticed this, the rate of summing a list seems to be over linear?
its nearly 3 times faster to sum the sums of smaller lists?
from time import clock
l=range(0,10000 00)
start=clock()
print sum(l),
print clock()-start
# now sum a list of the sums of 1000 slices.
start=clock()
print sum([sum(l[x:x+1000]) for x in xrange(0,len(l) ,1000)]),
print clock()-start
# repeat
start=clock()
print sum(l),
print clock()-start
# output from 500MHz AMD K62 64Mb Python 2.3.3 (#51, Dec 18 2003, 20:22:39)
[MSC v.1200 32 bit (Intel)] on win32
#499999500000 1.89348044721
#499999500000 0.731985115406
#499999500000 1.90818149818 2 1659
I get similar results from
Python 2.4a0 (#1, Feb 19 2004, 17:19:10)
[GCC 3.3.2 20031022 (Red Hat Linux 3.3.2-1)] on linux2
$ timeit -s 'l=range(0,1000 000)' 'sum(l)'
10 loops, best of 3: 985 msec per loop
$ timeit -s 'l=range(0,1000 000)' 'sum([sum(l[x:x+1000]) for x in xrange(0,len(l) ,1000)])'
10 loops, best of 3: 352 msec per loop
I suspect the reason is that the top loop has many operations on Python
longs (unbounded ints), while the bottom loop has relatively few. Here's a
use of sum() that doesn't switch from ints to longs:
$ timeit -s 'l=[0]*1000000' 'sum(l)'
10 loops, best of 3: 241 msec per loop
$ timeit -s 'l=[0]*1000000' 'sum([sum(l[x:x+1000]) for x in xrange(0,len(l) ,1000)])'
10 loops, best of 3: 285 msec per loop
.... the nested loop is slower, as it should be.
Jeff
simon place wrote: while playing about with inheriting from list to be able to cache macro properties i noticed this, the rate of summing a list seems to be over linear?
its nearly 3 times faster to sum the sums of smaller lists?
from time import clock
l=range(0,10000 00)
start=clock() print sum(l), print clock()-start
# now sum a list of the sums of 1000 slices. start=clock() print sum([sum(l[x:x+1000]) for x in xrange(0,len(l) ,1000)]), print clock()-start
# repeat start=clock() print sum(l), print clock()-start
# output from 500MHz AMD K62 64Mb Python 2.3.3 (#51, Dec 18 2003, 20:22:39) [MSC v.1200 32 bit (Intel)] on win32 #499999500000 1.89348044721 #499999500000 0.731985115406 #499999500000 1.90818149818
You are confusing the behavior of summing long integers with that of
summing integers.
When you sum from 0 to 65,534, your sum is just under sys.maxint on (32
bit machines). When you sum from 0 to 65,535, your sum is just over
sys.maxint (on 32 bit machines), and becomes a Python Long. It is no
longer a single add instruction when running on the core processor when
adding the running total with the next number, it is multiple
instructions. If you check the implementation, Python ends up doing
manual adds and carries on unsigned C shorts, which makes up each
'digit' in a Python long.
When you break the pieces up into blocks of 1000, the largest sum is for
998,999 to 999,999, which is 999,499,500; which you will notice is
smaller than sys.maxint (on 32 bit machines), and at worst only results
in 1000 Python long adds, as compared with 934464 long additions in your
original method (that factor of 934 times as many long additions is crazy).
The fact that it is /only/ 3 times slower shows us that Python's long
integer implementation for smaller long integers works pretty damn well.
- Josiah This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
by: Marcus |
last post by:
Hello,
I recently converted all my existing MyISAM tables to InnoDB tables
through phpmyadmin. I noticed some strange behavior whenever I would
refresh the screen, as phpmyadmin would report different numbers for the
cardinality of the primary key (i.e. one minute it would say cardinality
388, then 244 on refresh, then something else), and it would report
different values for the number of rows when mousing over the table
names on the...
|
by: Dmitriy Iassenev |
last post by:
hi,
I found an interesting thing in operator behaviour in C++ :
int i=1;
printf("%d",i++ + i++);
I think the value of the expression "i++ + i++" _must_ be 3, but all the
compilers I tested print 2.
|
by: thulsey |
last post by:
Hi all,
I've got some strange behavior happening in Firefox and Safari (Khtml
and Gecko) that displays *almost* fine in IE6.0 (still trying to get
pixels to line up, anal anal anal...)
To speed things up, and to avoid any problems with looking through the
css file, I'll say first that I based the navigation menu on the
"Suckerfish Dropdown menu" online demo over at htmldog.
(http://www.htmldog.com/articles/suckerfish/dropdowns/). In...
|
by: Alexander Inochkin |
last post by:
Hi!
I found same strange behavior of ASP.NET. It is possible this is the bug.
Follow the steps:
|
by: ivb |
last post by:
Hi all,
I am using DB2 8.1.11.1 on NT with ASP.NET 1.1
When application make connection to database (via ADO.NET), it set
"Connection timeout" parameter to 30 seconds.
After, when my webpage requests database, and query execution time
exceeds 30 seconds, the following error reported:
===
| |
by: Joseph Geretz |
last post by:
Writing an Outlook AddIn with C#. For the user interface within Outlook I'm
adding matching pairs of Toolbar buttons and Menu items. All of the buttons
and menu items are wired up to send events to the same method (aka
delegate?). I use the Tag property within this method to determine what user
action is taking place. Very simple:
When adding toolbar button:
tbButton.Click += new...
|
by: sara |
last post by:
Very strange behavior, but I suspect some is A2K and some might be for
me to correct. Just trying to see if anyone can help and advise.
We have a database that's been running for a few years with no
problems. We continuously add queries and reports. We're up to about
700 queries (no, not all are used and most are parameter queries - the
business asks a LOT of questions!), and under 250 reports and fewer
than 15 forms.
Data is...
|
by: Nicholas Palmer |
last post by:
Hi all,
Got a question about the AspCompat=true page property. First a little
background. We have an ASP.NET app that uses two COM components. The first
is the Microsoft OWC 11 components and the second is a custom VB6 COM
component. So I was reading about AspCompat=true and it seemed like it would
be a good fit for our app. From what I can tell both of the COM components
that we are using are STA and we are creating the components in...
|
by: david |
last post by:
I took old code and decided to modify it a bit, and I just noticed
that it does not compile at all and before server one of severs (main)
crashed in the system it was working fine (I am really sure that I
remember that).
Now I am getting this error:
$ make
g++ -Wall -ansi -pedantic -c pirma_lib.cpp
g++ -Wall -ansi -pedantic -c pirma.cpp
In file included from pirma.cpp:2:
|
by: Pilcrow |
last post by:
This behavior seems very strange to me, but I imagine that someone will
be able to 'explain' it in terms of the famous C standard.
-------------------- code -----------------------------------
#include <stdio.h>
int main (void)
{
char xx="abcd";
char * p1 = xx;
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it.
Here is my compilation command:
g++-12 -std=c++20 -Wnarrowing bit_field.cpp
Here is the code in...
| |
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth.
The Art of Business Website Design
Your website is...
|
by: Hystou |
last post by:
Overview:
Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
|
by: agi2029 |
last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own....
Now, this would greatly impact the work of software developers. The idea...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols.
I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
| |
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
|
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...
| |