On Sat, Nov 5, 2016 at 9:50 PM, Arthur Havlicek <arthurhavli...@gmail.com> wrote: > Pick 10 programmers for hire and count how many know how to write a > decorator. If you have specified you needed python specialists, you may > have 3-4. If not, you are lucky to find even one.
By "write a decorator", I presume you mean implement the decorator function, because anyone who's used Flask will have used "@app.route", for instance. But here's the thing. For everyone who writes a decorator function, there could be dozens who use it. How many people *on this mailing list* know how to implement namedtuple, vs how how many know how to use it? How many know how to properly implement a cache, vs how many can slap "@lru_cache()" on top of a function? For the most utterly extreme example possible, how many people in the world know how to encrypt data securely, vs how many know how to put "https:" into their browsers? When you look at "programmers for hire", you get a small number of brilliant experts with huge amounts of experience, and the rest are split between mid-level people looking for a new job, and entry-level people straight out of college. (Depending on your environment, the stats could easily be skewed either direction.) Most entry-level programmers are not going to have experience with writing decorator functions - but they don't need it. (Not that it's that hard. They're functions that accept and return functions, that's all.) > This is easy but time-consuming, I could roll my implementation and > showcase a few benchs. I am very confident that is the case. I would have > bet that I would need to do it at some point, but I wanted to poll opinions > a bit beforehand. > > About your bench: I don't really know why you are surprised the for loop is > slower. That's the result of comprehension being native while for loop > isn't. That does not mean writing to a copy would save time for exchange of > memory. In my opinion, the fact that we will win something is guaranteed > because we save a copy call and do the exact same operation. There is > nothing like cache magic optimization that could happen because the mapping > needs to read the first list anyway. Nor we need a temporary buffer to > cache operations since they are independent. Really, I am ready to make a > serious bet. Okay! *Do* make that bet. Gamble the most precious currency there is: developer time. How much are you prepared to bet? Two hours? Ten hours? Spend that much time writing the implementation and benchmarking it. If you're confident that this really is such a win, the time won't be lost - you'll end up with a viable patch for inclusion. If you lose the bet, well, that's what betting is like. Sometimes you lose. I may sound cynical and critical from the above ("show me"), but in reality, I would love to see the results of your benchmark. Improving performance is a good thing. I just want to know that it's actually going to happen. ChrisA -- https://mail.python.org/mailman/listinfo/python-list