Const in python?
David Brown
david at no.westcontrol.spam.com
Tue Mar 25 10:57:42 EST 2003
More information about the Python-list mailing list
Tue Mar 25 10:57:42 EST 2003
- Previous message (by thread): Const in python?
- Next message (by thread): Const in python?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
"Alex Martelli" <aleax at aleax.it> wrote in message news:jL_fa.7564$Jg1.161396 at news1.tin.it... > David Brown wrote: > > > > > "Alex Martelli" <aleax at aleax.it> wrote in message > > news:bAXfa.6199$Jg1.139809 at news1.tin.it... > >> David Brown wrote: > >> ... > >> > might use. For example, some programs might want to change some > >> > built-ins, or some common library functions - perhaps as part of > > debugging > >> > or profiling (maybe you want to find out how many times "len" is > > called - > >> > >> And what if you want to find out how many times operator + is used (on > >> any objects whatsoever, just as here you want to count uses of built-in > >> 'len' on any object whatsoever)? What makes counting the uses of 'len' > >> more important than counting the uses of '+', enough to warrant slowing > >> all programs down (or making everything more complicated) to enable the > >> former by simpler means than the latter? > >> > > > > Is it not possible to override the "+" operator as well? As you point > > Not for ALL types of objects -- no way to get at the + used when you > code 2+2. You can override __plus__ in your OWN type -- just as you > can override __len__ in your own type. That you can REBIND the built-in > name 'len' is a completely different issue, and you cannot do anything > comparable with '+' (you need to work on bytecode, etc, etc). > > > out, the vast majority of users have no need of doing that sort of thing - > > that > > includes me, so I've never looked at how it might be done. My preference > > is, of course, to have the best of both worlds - in general I too would > > prefer increased speed for common operations, but I think the flexibility > > to > > override things when needed is important. In the case of something like > > "When needed" is the key here. > > > "len", or "+", the overwhelming majority of uses do not require > > overriding, > > and could benifit from speed-ups. But what about, for example, methods in > > a > > user defined class? The majority of these are static, but sometimes you > > want to change them - the ability to do this, even while running the > > program, is one of the big benifits of Python. If it were practical, then > > flexible locking would allow you to choose - perhaps builtins and standard > > libraries would be locked by default, but unlockable if desired, and other > > modules would be unlocked until explicitly locked. > > Yes, that would make sense. But to enable compiler optimizations, > unlockable builtins would not be an option. > > > Failing that, a compiler (command-line) switch that selects locked or > > unlocked builtins (with locked being the default) would be likely to make > > a big difference, with perhaps less work. > > It may be necessary to allow disabling of the locked-builtins optimization, > perhaps. But I suspect the amount of work to allow both ways would not > necessarily be trivial. > > > > Perhaps it would also be possible to make use of a pysco-like system, > > except > > that optomised Python bytecode is produced rather than machine code? As > > far as I understand it, pysco "locks" common functions such as built-ins. > > It does? Didn't last I checked it, but that WAS quite a while ago. I'm not sure, but I think that it assumes that methods and functions are not changed within functions. Perhaps it generates seperate copies of the function when you rebind functions or methods, like it does if you call functions or methods using different types. I'm on wobbly ground here, having read a bit about psyco but not really dug into the details, but it did strike me that there was maybe something to gain here. Compiling to optomised byte code is obviously not going to get as big a performance gain as compiling to machine code, but maybe it could get somewhere in between. > > > Alex >
- Previous message (by thread): Const in python?
- Next message (by thread): Const in python?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list