Tachyon’s `--diff-flamegraph` scales times in baseline run to duration of current run
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Python
- Estrelas
- 77.2k
- Forks
- 36k
- Métricas de merge de PRs
- Métricas de PR pendentes
Descrição
Bug report
Bug description:
As discussed with @pablogsal during EuroPython sprints:
Using this simple example script (flamegraph_demo.py):
import time
def main():
f_1()
f_2()
def f_1():
time.sleep(0.5) # change this to 1.5 in the second run
def f_2():
time.sleep(1)
main()
python -m profiling.sampling run --binary -o baseline.bin flamegraph_demo.py
vim flamegraph_demo.py # edit f_1 to sleep for 1.5 s
python -m profiling.sampling run --diff-flamegraph baseline.bin -o diff.html flamegraph_demo.py
generates this diff flamegraph:
f_2 is unchanged between both runs, so the “Baseline Self” time should be equal to the “Current Self” and equal to 1 s (that it displays “1 ms” is covered in #154059); however, the baseline for all functions gets scaled with the ratio of total time in this run over total time of the previous run (in this case: 2.5 s / 1.5 s = 1.667).
I can imagine scenarios where this scaling is useful (e.g. when the baseline is generated on a different machine). However, in the common case of running baseline and diff on the same machine, this scaling means that a lot of unchanged functions get colour-coded, which distracts from the few functions that experienced a meaningful change.
CPython versions tested on:
3.15
Operating systems tested on:
macOS
Linked PRs
- gh-154082
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Comece pelo ponto de entrada profiling.sampling e reproduza os comandos usando flamegraph_demo.py, comparando baseline.bin com diff.html. Rastreie como --diff-flamegraph dimensiona os tempos de baseline e verifique se f_2, que não foi alterada, apresenta tempos self de baseline e atuais iguais a 1 s, sem alterações de cor desnecessárias.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- python
- Domínio
- performance
- Tipo de issue
- Bug
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Estagnada
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 35/100