Measure (profile) time spent in each target of a Makefile

后端 未结 2 1664
清歌不尽
清歌不尽 2020-12-28 17:19

Is there a way to echo the (system, user, real) time spent in each target of a Makefile recursively when I do make all?

I\'d like to benchm

相关标签:
2条回答
  • 2020-12-28 17:47

    Gnu Make uses the $(SHELL) variable to execute commands in the targets.

    By default it is set to /bin/sh.

    You can set this variable to a script that will execute the command given with the "time" command. Something like this:

    In your makefile specify the SHELL variable, somewhere at the top:

    SHELL = ./report_time.sh
    

    and in the file ./report_time.sh:

    #!/bin/sh
    shift  # get rid of the '-c' supplied by make.
    time sh -c "$*"
    

    The replace the 'sh' command with the original SHELL specified in the Makefile if any.

    This will report the timings.

    However This will not tell you what target the report_time.sh script is running. One solution for this is to prepend the target name ($@) in each target entry in the makefile so that it will be passed to the report_time.sh script as well.

    0 讨论(0)
  • remake --profile is a drop-in replacement for make. It generates a target call tree in a callgrind format.

    0 讨论(0)
提交回复
热议问题