On 03/28/2011 07:21 PM, Andrew Brown wrote: > I tried that logging option once, but I didn't know how to read the > logs. They're not exactly self explanatory. Is there a resource > somewhere that explains how to read those logs?
Not really, no :-( > Regardless, I've implemented your suggestion and moved reads from that > dictionary to a function decorated with @purefunction. Indeed, > performance is greatly improved! Thanks! > > Current version: > https://bitbucket.org/brownan/bf-interpreter/src/d3394345272e/targetbf.py > > A few questions: > > When the optimizer encounters a "pure" function, it must compare the > objects passed in to previous invocations... does it consider the > contents of container or other mutatible objects? or just the object > identity, to be part of the function's input? Just the object's identity. > It looks like, from logs of my new version, it's not reading from the > dictionary at all during the trace, so I would guess it's not > considering the actual contents of the dictionary as part of the > function's input. This isn't surprising, but I just want to know for sure. > > Second, I noticed in jit.py the function hint() which has a parameter: > "promote - promote the argument from a variable into a constant". Could > this be an appropriate alternate to the @purefunction solution? Or, I'm > guessing, does it just mean the name bracket_map won't change bindings, > but does not impose a restriction on mutating the dictionary? > If you are interested, this blog series explains the usage of hints: http://bit.ly/bundles/cfbolz/1 The logs there are a bit niceified though. Carl Friedrich _______________________________________________ pypy-dev@codespeak.net http://codespeak.net/mailman/listinfo/pypy-dev