> On Feb 4, 2016, at 08:22, Sven R. Kunze <srku...@mail.de> wrote: > > On 04.02.2016 16:57, Matthias Bussonnier wrote: >>> On Feb 3, 2016, at 13:22, Yury Selivanov <yselivanov...@gmail.com> wrote: >>> >>> >>> An ideal way would be to calculate a hit/miss ratio over time >>> for each cached opcode, but that would be an expensive >>> calculation. >> Do you mean like a sliding windows ? >> Otherwise if you just want a let's say 20% miss threshold, you increment by >> 1 on hit, >> and decrement by 4 on miss. > > Division is expensive.
I'm not speaking about division here. if you +M / -N the counter will decrease in average only if the hit/miss ratio is below N/(M+N), but you do not need to do the division. Then you deoptimize only if you get < 0. > >> >> On Feb 3, 2016, at 13:37, Sven R. Kunze <srku...@mail.de> wrote: >> >>> On 03.02.2016 22:22, Yury Selivanov wrote: >>>> One way of tackling this is to give each optimized opcode >>>> a counter for hit/misses. When we have a "hit" we increment >>>> that counter, when it's a miss, we decrement it. >>> Within a given range, I suppose. Like: >>> >>> c = min(c+1, 100) >> >> Min might be overkill, maybe you can use a or mask, to limit the windows >> range >> to 256 consecutive call ? > > Sure, that is how I would have written it in Python. But I would suggest an > AND mask. ;-) Sure, implementation detail I would say. Should not write emails before breakfast... The other problem, with the mask, is if your increment hit 256 you wrap around back to 0 where it deoptimize (which is not what you want), so you might need to not mask the sign bit and deoptimize only on a certain negative threshold. Does it make sens ? -- M > > Best, > Sven _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com