"E. Robert Tisdale" <E.************ **@jpl.nasa.gov > wrote in message news:<cn******* ***@nntp1.jpl.n asa.gov>...

That's a good start.

First,

convince us that your compiler did *not* simply inline

f(const DISK_REGISTER&) and/or g(DISK_REGISTER ).

Show us the compiler version and options that you used.

pkrumins$ g++ test.cpp -o test -W -Wall

pkrumins$ g++ -v

gcc version 3.3.4

Since I am was optimizing, no functions were inlined.

Second,

convince us that your results are *significant*.

Run each case several times

and calculate the average time and standard deviation.

The difference in average times must be at least as large

as the standard deviation(s).

I changed the number of iterations for each test to 200 million, so

the tests took less time.

I did 10 observations.

Here are the results (sorted by time):

1. f(const DISK_REGISTER&)

N time (s) delta time (s) (delta time)^2 (s^2)

1 6,324 0,0195 0,00038025

2 6,326 0,0175 0,00030625

3 6,327 0,0165 0,00027225

4 6,334 0,0095 0,00009025

5 6,336 0,0075 0,00005625

6 6,350 0,0065 0,00004225

7 6,353 0,0095 0,00009025

8 6,354 0,0105 0,00011025

9 6,363 0,0195 0,00038025

10 6,368 0,0245 0,00060025

----- ----------

avg: 6,3435 sum: 0,00232850

standard deviation:

sqrt(sum / (n - 1)) = 0,016084844 (s)

2. g(DISK_REGISTER )

N time (s) delta time (s) (delta time)^2 (s^2)

1 5,596 0,0048 0,00002304

2 5,597 0,0038 0,00001444

3 5,599 0,0018 0,00000324

4 5,599 0,0018 0,00000324

5 5,600 0,0008 0,00000064

6 5,600 0,0008 0,00000064

7 5,601 0,0002 0,00000004

8 5,603 0,0022 0,00000484

9 5,604 0,0032 0,00001024

10 5,609 0,0082 0,00006724

----- ----------

avg: 5,601 sum: 0,00012760

standard deviation: 0,003765339 (s)

Now the results are significant and we see that pass by value is

faster than pass by const reference.

P.Krumins