Timing bash functions

9.7k views Asked by At

I'd like to see how long it takes for a bash function to run. After doing a little research, I've come up with this approach which uses a sub-shell:

function test-function() {

    time (
        rsync -av ~/tmp/test-dir-start/  ~/tmp/test-dir-end/
        rsync -av ~/tmp/test-dir-start/  ~/tmp/test-dir-end-2/
        # etc...
    )

}

Are there alternate/better ways to time bash functions?

Update: I'm want the time call to be embedded in the function so that it runs every time without having to do time test-function. I should have been more clear on that.

1

There are 1 answers

0
jordanm On BEST ANSWER

You can use command grouping rather than a subshell:

time { command1; command2; }

Update - more specific example:

test-function() {

  time {
     rsync -av ~/tmp/test-dir-start/  ~/tmp/test-dir-end/
     rsync -av ~/tmp/test-dir-start/  ~/tmp/test-dir-end-2/
     # etc...
    }
}