Today, we will be discussing the optimization technique in Python. In this article, you will get to know to speed up your code by avoiding the re-e...
For further actions, you may consider blocking this person and/or reporting abuse
Wow thanks! I had no idea this was even possible.
For the list
append
, is it because of the use oflen()
? Just checked the code because I wanted to know why this is happening. Couldn't figure out the dictionary though.Both are actually the same effect. When you call
data.get(...)
, you're calling the method, of course, but also looking up the method in thedata
object's internal dictionary, called__dict__
. What the above article is showing is that there's some savings to be made if you cache the lookup.He's not optimizing a list at all, but he is optimizing a dict - in both cases.
Because
data[num] = ...
is actuallydata.set(num, ...)
, there's another candidate for optimization there, as well - but by now you can probably guess what it is.It's was fixed in python3.8
so v3.8 is faster? (like the article says)
Do you have some source on this? How it was fixed?
Thanks for sharing.
I wonder though if this reduces code readability.
If we are not talking about mission critical paths, then it may not worth the 10-15 % reduction.
Yes it does - idiomatic Python code is typically not written this way.
This. Before applying this technique, make sure to measure the performance of your entire application!
Finally, a better advice for beginners (in my opinion), is to advise them to use comprehensions when they can:
is more idiomatic and even faster than the technique presented here.
@Dimitri Did you tried this -
Kindly Look at the result below -
and as you said -
Excellent! You took the time to verify what I was saying without giving proof - and you we right to do so!
The problem is that the last line in the second function is actually building a list.
Here's a better example:
Great article!
Check out the dis module and disassemble the code and it explains why this happens. TLDR: it's one less instruction inside the hot loop.
This makes me thing of how slow really Python must be if the evaluation takes so long... Anyone got more info that, how much that affects performance and why?