Le mer. 27 févr. 2019 à 00:17, Victor Stinner firstname.lastname@example.org a écrit :
My sad story with code placement: https://vstinner.github.io/analysis-python-performance-issue.html
tl; dr Use PGO.
Hum wait, this article isn't complete. You have to see the follow-up: https://bugs.python.org/issue28618#msg286662
""" Victor: "FYI I wrote an article about this issue: https://haypo.github.io/analysis-python-performance-issue.html Sadly, it seems like I was just lucky when adding __attribute__((hot)) fixed the issue, because call_method is slow again!"
I upgraded speed-python server (running benchmarks) to Ubuntu 16.04 LTS to support PGO compilation. I removed all old benchmark results and ran again benchmarks with LTO+PGO. It seems like benchmark results are much better now.
I'm not sure anymore that _Py_HOT_FUNCTION is really useful to get stable benchmarks, but it may help code placement a little bit. I don't think that it hurts, so I suggest to keep it. Since benchmarks were still unstable with _Py_HOT_FUNCTION, I'm not interested to continue to tag more functions with _Py_HOT_FUNCTION. I will now focus on LTO+PGO for stable benchmarks, and ignore small performance difference when PGO is not used.
I close this issue now. """
Now I recall that I tried hard to avoid PGO: the server used by speed.python.org to run benchmarks didn't support PGO.
I fixed the issue by upgrading Ubuntu :-) Now speed.python.org uses PGO. I stopped to stop to manually help the compiler with code placement.