Win a copy of The Way of the Web Tester: A Beginner's Guide to Automating Tests this week in the Testing forum!

# Finding Elapsed Time

Steve Dyke
Ranch Hand
Posts: 1698
1
I need to find the elapsed mili seconds between the start of a procedure and its finish. I use this number to append to a file path so as to not diplicate file names. My code is here but I get a result of zero.

Jim Hoglund
Ranch Hand
Posts: 525
I usually do it this way. Hope this helps.

Jim ... ...

Paul Clapham
Sheriff
Posts: 21443
33
So that tells you that the code took less than a millisecond to run.

This probably isn't surprising if you just timed a single run of a single method. You're running, let's say, a 1 gigahertz machine. That means it can execute 10^9 machine operations in a second. This is 10^6 -- one million -- machine operations in a millisecond. (Probably your machine is faster than that, but the arithmetic is harder.) So what you timed took less than one million machine operations.

Steve Dyke
Ranch Hand
Posts: 1698
1
Jim Hoglund wrote:I usually do it this way. Hope this helps.

Jim ... ...

This looks like it should work but I am still getting zero. The process runs very fast but surely there is some fraction of time difference.

Steve Dyke
Ranch Hand
Posts: 1698
1
Paul Clapham wrote:So that tells you that the code took less than a millisecond to run.

This probably isn't surprising if you just timed a single run of a single method. You're running, let's say, a 1 gigahertz machine. That means it can execute 10^9 machine operations in a second. This is 10^6 -- one million -- machine operations in a millisecond. (Probably your machine is faster than that, but the arithmetic is harder.) So what you timed took less than one million machine operations.

Okay, that makes sense. So my altrernative is a timestamp but how can I get the result of the following to appear like a simple string?

Results: 2011-06-28 17:24:53.911

A simple replace?

Carey Brown
Bartender
Posts: 1755
22
There may be a more elegant way, but here is what I have...

Jim Hoglund
Ranch Hand
Posts: 525
Jim ... ...

Rob Spoor
Sheriff
Posts: 20709
68
Instead of new Date().getTime() use System.currentTimeMillis(). They return the same value without the need for a new Date object.

Campbell Ritchie
Sheriff
Posts: 50714
83
. . . or the System class method which returns time in nanoseconds. It's called something like nanoTime or getNanoTime.

Jim Hoglund
Ranch Hand
Posts: 525
Excellent !
Jim ... ...

lokesh sree
Ranch Hand
Posts: 100
Hi Steve,

You can do the following..

long startTime = System.nanoTime();
// ... the code being measured ...
long estimatedTime = System.nanoTime() - startTime;

And hope the code takes atleast nano seconds to execute..