gpt4 book ai didi

build-process - 如何优化SCons脚本的启动时间?

转载 作者:行者123 更新时间:2023-12-03 12:02:24 25 4
gpt4 key购买 nike

我有一个SCons脚本,大约需要10秒钟才能发现不需要重建什么,这对于一个相当小的项目来说感觉很长。阅读SConscript本身仅需一两秒钟,大多数时间都花在:

scons: Building targets ...

步。

我怎样才能知道 scons在做什么呢?在编写快速SCons脚本方面还能提供什么其他一般建议?

最佳答案

scons --profile + snakeviz

这种结合使我清楚地看到了瓶颈。
--profilecProfile格式输出二进制文件present in the stdlib

然后snakeviz是一个很棒的可视化工具,可以在GUI中快速查看该文件:

scons --profile f.prof
pip install -u snakeviz
snakeviz f.prof

输出看起来像这样:

enter image description here

您可以将鼠标悬停在每个框上,以查看包含该功能的文件的完整路径。

在更一般的Python上下文中的问题: Is there any simple way to benchmark python script?

--debug + ts -s

这不能解决我的特定问题,但通常可以给您一些想法:
  • 启用所有--debug标志,或所有看似有趣的
  • 通过ts -s传递它,它显示每行何时出现在stdout上:How to monitor for how much time each line of stdout was the last output line in Bash for benchmarking?
  • 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中进行了测试。

    另请参阅
  • Windows子集:SCons super slow startup in windows
  • 关于build-process - 如何优化SCons脚本的启动时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1318863/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com