Hello Carl, thanks a lot for the clarification and for creating the ticket!
On Mon, Oct 3, 2016 at 7:28 PM, Carl Friedrich Bolz <cfb...@gmx.de> wrote: > Hi Tuom, > > The problem is the key=... argument to sort, which isn't optimized > well. This kind of code is much faster: > > wrapped_data = [(p.x, p) for p in data] > wrapped_data.sort() > data = [it[1] for it in wrapped_data] > > We should fix this problem. I've created an issue so it doesn't get > lost: > > https://bitbucket.org/pypy/pypy/issues/2410/listsort-key-is-slow > > Thanks for the report! > > Cheers, > > Carl Friedrich > > > On 26/09/16 22:57, Tuom Larsen wrote: >> Dear list! >> >> I stumbled upon a problem and I was wondering if someone would by so >> kind and explain to me what is going on. >> >> The problem is sorting 2 000 000 points by `x` coordinate: >> >> from random import random >> from time import time >> >> class point(object): >> def __init__(self, x, y): >> self.x, self.y = x, y >> >> data = [point(random(), random()) for i in range(2000000)] >> >> t = time() >> data.sort(key=lambda p:p.x) >> print time() - t >> >> on my machine in runs 8.74s under PyPy 5.4.1 on MacOS. I then try to >> sort the points in JavaScript: >> >> var data = []; >> for (var i=0; i<2000000; i++) { >> data.push({x:Math.random(), y:Math.random()}); >> } >> >> console.time('sorting'); >> data.sort(function(a, b) { return a.x - b.x; }); >> console.timeEnd('sorting'); >> >> and it runs in 3.09s under V8 5.3. >> >> I was just wondering, why is it nearly 3x slower under PyPy than it is >> under V8? Is there any way I could make the code run faster? >> >> Thank you in advance! >> _______________________________________________ >> pypy-dev mailing list >> pypy-dev@python.org >> https://mail.python.org/mailman/listinfo/pypy-dev >> > > _______________________________________________ > pypy-dev mailing list > pypy-dev@python.org > https://mail.python.org/mailman/listinfo/pypy-dev _______________________________________________ pypy-dev mailing list pypy-dev@python.org https://mail.python.org/mailman/listinfo/pypy-dev