On 11/09/2012 13:06, Victor Stinner wrote: >>> * Call builtin functions if arguments are constants. Examples: >>> >>> - len("abc") => 3 >>> - ord("A") => 65 >> >> Does it preserve python semantics? What if you change the len builtin? > > This optimization is disabled by default (in the version 0.3), because > builtin functions may be shadowed. Examples: "len=ord; > print(len('A'))" or exec(compile("print(len('A'))", "test", "exec"), > {'len': ord}). > > If you know that one specific builtin function is shadowed (ex: > print), you can modify the configuration to enable optimizations on > builtin functions except the specified function. > > Do you projects where builtin functions are shadowed? > > The idea is that the author of the application knows its application > (... and all modules used by applications) and is able to explicitly > specify what is that "constant". You can for example declare some > variables as constant using Config.add_constant("module.name", value). > In the same manner, you can declare "pure" functions (without border > effect). > Do you know what the cost would be of, say, replacing: len("abc") with: 3 if len is __builtins__.len else len("abc") if possible where the lookup __builtins__.len is been done early, such as at compile time?
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4