<p dir="ltr">Le 19 nov. 2016 21:29, "serge guelton" <<a href="mailto:sguelton@quarkslab.com">sguelton@quarkslab.com</a>> a écrit :<br>
> Thanks *a lot* victor for this great article. You not only very<br>
> accurately describe the method you used to track the performance bug,<br>
> but also give very convincing results.</p>
<p dir="ltr">You're welcome. I'm not 100% sure that adding the hot attrbute makes the performance of call_method reliable at 100%. My hope is that the 70% slowdown doesn't reoccur.</p>
<p dir="ltr">> I still wonder what the conclusion should be:<br>
><br>
> - (this) Micro benchmarks are not relevant at all, they are sensible to minor<br>
> factors that are not relevant to bigger applications</p>
<p dir="ltr">Other benchmarks had peaks: logging_silent and json_loads. I'm unable to say if microbenchmarks must be used or not to cehck for performance regression or test the performance of a patch. So I try instead to analyze and fix performance issues.</p>
<p dir="ltr">At least I can say that temporary peaks are higher and more frequent on microbenchmark.</p>
<p dir="ltr">Homework: define what is a microbenchmark :-)<br></p>
<p dir="ltr">> - There is a generally good code layout that favors most applications?</p>
<p dir="ltr">This is an hard question. I don't know the answer. The hot attributes put tagged functions in a separated ELF section, but I understand that inside the section, order is not deterministic.</p>
<p dir="ltr">Maybe the size of a function code matters too. What happens if a function grows? Does it impact other functions?<br></p>
<p dir="ltr">> Maybe some core function from the interpreter ?</p>
<p dir="ltr">I chose to only tag the most famous functions of the core right now. I'm testing tagging functions of extensions like json but I'm not sure that the result is significant.</p>
<p dir="ltr">> Why does PGO fails to<br>
> ``find'' them?</p>
<p dir="ltr">I don't use PGO on speed-python.</p>
<p dir="ltr">I'm not sure that is PGO is reliable neither (reproductible performance).</p>
<p dir="ltr">Victor</p>