Question

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.

Was it helpful?

Solution

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...
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top