scons --profile
+ snakeviz
Эта комбинация показала мне, в чем именно заключалось узкое место.
--profile
выводит двоичный файл в формате cProfile
, который присутствует в стандартной библиотеке.
snakeviz
— отличный инструмент визуализации для быстрого просмотра этого файла в графическом интерфейсе:
scons --profile f.prof
pip install -u snakeviz
snakeviz f.prof
Вывод выглядел так:
и вы можете навести курсор на каждое поле, чтобы увидеть полный путь к файлу, содержащему функцию.
Вопрос в более общем контексте Python: любой простой способ сравнить скрипт Python?
--debug
+ ts -s
Это не решило мою конкретную проблему, но часто может дать вам некоторые идеи:
- включить все флаги
--debug
или все, что покажется интересным
- передать его через
ts -s
, который показывает, когда каждая строка появляется на стандартном выводе: -stdout-was-the-last-output-line-in/49797547#49797547">Как отслеживать, сколько времени каждая строка stdout была последней строкой вывода в Bash для бенчмаркинга?
time scons --debug=count,duplicate,explain,findlibs,includes,memoizer,memory,objects,prepare,presub,stacktrace,time |
ts -s | tee f
Пример выдержки из вывода, который показал, где у меня был огромный временной разрыв между 2 и 10 секундами, на котором я пытался сосредоточиться:
00:00:02 SConscript:/data/gem5/master3/build/ARM/sim/power/SConscript took 1.556 ms
00:00:02 dup: relinking variant 'build/ARM/sim/probe/SConscript' from 'src/sim/probe/SConscript'
00:00:02 Building build/ARM/sim/probe/SConscript with action:
00:00:02 UnlinkFunc(target, source, env)
00:00:02 Building build/ARM/sim/probe/SConscript with action:
00:00:02 LinkFunc(target, source, env)
00:00:02 SConscript:/data/gem5/master3/build/ARM/sim/probe/SConscript took 0.401 ms
00:00:10 SConscript:/data/gem5/master3/build/ARM/tests/opt/SConscript took 98.225 ms
00:00:10 SConscript:/data/gem5/master3/build/ARM/SConscript took 8885.387 ms
00:00:10 SConscript:/data/gem5/master3/SConstruct took 9409.641 ms
00:00:10 scons: done reading SConscript files.
00:00:10 scons: Building targets ...
Протестировано в scons 3.0.1, Ubuntu 18.04.
См. также
person
Ciro Santilli 新疆再教育营六四事件ۍ
schedule
16.01.2020