Path: csiph.com!usenet.pasdenom.info!news.redatomik.org!newsfeed.xs4all.nl!newsfeed1.news.xs4all.nl!xs4all!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.004 X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; ';-)': 0.03; 'alignment': 0.07; 'assuming': 0.09; 'integers': 0.09; 'objects,': 0.09; 'worse': 0.09; 'cc:addr:python-list': 0.11; '(there': 0.16; 'from:addr:rosuav': 0.16; 'from:name:chris angelico': 0.16; 'integers,': 0.16; 'malloc': 0.16; 'ought': 0.16; 'sorting': 0.16; 'wrote:': 0.18; 'thu,': 0.19; 'feb': 0.22; 'cc:addr:python.org': 0.22; 'bytes': 0.24; "shouldn't": 0.24; 'cc:2**0': 0.24; 'sort': 0.25; 'references': 0.26; 'header:In-Reply-To:1': 0.27; 'chris': 0.29; 'am,': 0.29; 'absolute': 0.30; 'message-id:@mail.gmail.com': 0.30; 'that.': 0.31; 'object.': 0.31; 'overhead': 0.31; "they'll": 0.31; 'figure': 0.32; 'another': 0.32; 'actual': 0.34; 'could': 0.34; 'received:google.com': 0.35; 'add': 0.35; 'in.': 0.36; 'ram': 0.36; 'two': 0.37; 'list': 0.37; 'that,': 0.38; 'sure': 0.39; 'even': 0.60; "you're": 0.61; 'our': 0.64; '26,': 0.68; '2015': 0.84; 'each,': 0.84; 'to:none': 0.92 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:cc :content-type; bh=DcWcDFviwi4pBvOgg2+R8K5vCOuc5BUMGveBGNlQrUo=; b=lQ/AxDvh9FHHJjxjsfoeSQbpvWm5vCHNGl5SrBuiUbyFksSnGiL/ttJG8/ycsUEA9t S8XV1K52VyiDEHB2JN1Jiyh63N8RKU0apxXW2tGOMvoQPO7biUkLHfdMebh0kaQmFXlN 2XkLth0PlPRMgGL2b0FKzqrvUvFCiO+mwckSkdtPypimmFG8riYtH/NwJOhQTqkmTRgW 2JhEtzVcSWWcyOyYlGNeN3E0XQUSloyi3leioIitPgt7y7IOy4x3X6+HPRbtnvDwyn/T hd0Q53uQ9Tn5P/TicddWpJqiYf3sJXU3P/E+HY5E95RxFcgaIpRKmLHsgQjEGBox/IXK x2vA== MIME-Version: 1.0 X-Received: by 10.107.160.212 with SMTP id j203mr5071684ioe.43.1424877080658; Wed, 25 Feb 2015 07:11:20 -0800 (PST) In-Reply-To: References: <1cf84559-3a63-4799-a879-ae8e513d387e@googlegroups.com> Date: Thu, 26 Feb 2015 02:11:20 +1100 Subject: Re: Bug in timsort!? From: Chris Angelico Cc: "python-list@python.org" Content-Type: text/plain; charset=UTF-8 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: 20 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1424877089 news.xs4all.nl 2829 [2001:888:2000:d::a6]:41878 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:86407 On Thu, Feb 26, 2015 at 2:05 AM, Sturla Molden wrote: > On 25/02/15 15:33, Chris Angelico wrote: > >> It's even worse than that. Unless you have a list of 2**49 references >> to the same few objects, you're going to need to have some actual >> content for each one. The absolute best you could do is to sort >> integers, which would take 32 bytes each [1]; if you're sorting >> strings, they'll be 90 bytes each, so the integers are our best bet. >> So add another *five* powers of two to the RAM requirements. > > > In that case you also need to add the PyObject_HEAD overhead for each > object. ;-) Not sure about that, because the figure of 32 bytes came from sys.getsizeof(). So assuming there's no significant malloc overhead (there shouldn't be any alignment padding, for instance), 32 bytes ought to be it - pack 'em all in. ChrisA