<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d"><br>
</div>You're concerned that a new feature may increase how high of a<br>
threshold you need, yet it could also exceed the "maximum" of your<br>
adaptive scheme.<br>
<br>
I'm not convinced you need that high of a threshold anyway.  I'd like<br>
to see a benchmark showing how your app performs at different levels.</blockquote><div><br>You are absolutely right that I can set a threshold high enough.<br>With the default values Python is extremely slow for certain cases.<br>
I'm arguing it should automatically detect when it is being stupid<br>and attempt to fix it.  In particular I would set the maximum very<br>high and start at the minimum, which might be near the current<br>defaults.<br>
<br>For example I get the following in a simple test (python2.6):<br><br>> python gctest.py<br>gc not disabled<br>elapsed 19.2473409176<br>> python gctest.py disable<br>gc disabled<br>elapsed 4.88715791702<br><br>In this case the interpreter is spending 80% of its time trying<br>
to collect non-existent garbage.  Now a newbie who<br>didn't know to go fiddling with the garbage collector<br>might just conclude "python is ssslllooowwww" and go<br>back to using Perl or Ruby or whatever in a case like this.<br>
Maybe the powers that be couldn't care less about it, I don't<br>know.  (I know newbies can be irritating).<br><br>The problem is quadratic also: if I double the limit the<br>penalty goes up by a factor of 4.<br><br>
Here is the source:<br><br>def test(disable=False, limit=1000000):<br>    from time import time<br>    import gc<br>    if disable:<br>        gc.disable()<br>        print "gc disabled"<br>    else:<br>        print "gc not disabled"<br>
    now = time()<br>    D = {}<br>    for i in range(limit):<br>        D[ (hex(i), oct(i)) ] = str(i)+repr(i)<br>    L = [ (y,x) for (x,y) in D.iteritems() ]<br>    elapsed = time()-now<br>    print "elapsed", elapsed<br>
<br>if __name__=="__main__":<br>    import sys<br>    disable = False<br>    if "disable" in sys.argv:<br>        disable = True<br>    test(disable)<br><br><br>-- Aaron Watters<br><br>===<br><a href="http://www.xfeedme.com/nucular/pydistro.py/go?FREETEXT=being+anal">http://www.xfeedme.com/nucular/pydistro.py/go?FREETEXT=being+anal</a><br>
<br></div></div><br>