[std-interval] C++ interval std

Alan Eliasen eliasen at mindspring.com
Fri Apr 7 13:05:30 PDT 2006


Steve Clamage wrote:
> I compiled and ran on 64-bit sparc (US II) and 64-bit amd64 (Opteron).
> According to my earlier claims, pass-by-value should have been faster.
> 
> 64-bit sparc:
> addByValue:     690000 ticks 4.1e+08
> addByRef:       680000 ticks 4.1e+08
> addByConstRef:  450000 ticks 4.1e+08
> 
> 64-bit amd64:
> addByValue:     1280000 ticks 4.1e+08
> addByRef:        670000 ticks 4.1e+08
> addByConstRef:   670000 ticks 4.1e+08
> 
> Color my face red. :-)
> 
> This result is quite different from other experiments with small structs
> that showed pass-by-value performing better. One possibility is that the
> compiler is missing some optimization opportunities. Another is that
> this example is not representative.

   Well, it looks like in GCC that it's quite dependent on optimization
levels and inlining.  I rewrote my samples to include both inlined and
ordinary functions, and made some changes that apparently prevented the
compiler from optimizing out loops.  I should adopt your sample for the
inner loop, but here are my numbers:

x86_64, gcc 3.4.4, Linux:
-O0:
addByValue:             20020000 ticks  Sum: [1.7, 4.1]
addByRef:               19590000 ticks  Sum: [1.7, 4.1]
addByConstRef:          19590000 ticks  Sum: [1.7, 4.1]
addByValueInline:       22550000 ticks  Sum: [1.7, 4.1]
addByRefInline:         19460000 ticks  Sum: [1.7, 4.1]
addByConstRefInline:    19610000 ticks  Sum: [1.7, 4.1]

-O1:
addByValue:             12570000 ticks  Sum: [1.7, 4.1]
addByRef:               8350000 ticks   Sum: [1.7, 4.1]
addByConstRef:          8620000 ticks   Sum: [1.7, 4.1]
addByValueInline:       9980000 ticks   Sum: [1.7, 4.1]
addByRefInline:         5600000 ticks   Sum: [1.7, 4.1]
addByConstRefInline:    5600000 ticks   Sum: [1.7, 4.1]

-O2:
addByValue:             11490000 ticks  Sum: [1.7, 4.1]
addByRef:               7370000 ticks   Sum: [1.7, 4.1]
addByConstRef:          7960000 ticks   Sum: [1.7, 4.1]
addByValueInline:       2140000 ticks   Sum: [1.7, 4.1]
addByRefInline:         5590000 ticks   Sum: [1.7, 4.1]
addByConstRefInline:    5600000 ticks   Sum: [1.7, 4.1]

-O3:
addByValue:             2140000 ticks   Sum: [1.7, 4.1]
addByRef:               5590000 ticks   Sum: [1.7, 4.1]
addByConstRef:          5580000 ticks   Sum: [1.7, 4.1]
addByValueInline:       2000000 ticks   Sum: [1.7, 4.1]
addByRefInline:         5600000 ticks   Sum: [1.7, 4.1]
addByConstRefInline:    5590000 ticks   Sum: [1.7, 4.1]



and x86 Windows (mingw):

-O0:
addByValue:             115077 ticks    Sum: [1.7, 4.1]
addByRef:               85886 ticks     Sum: [1.7, 4.1]
addByConstRef:          85675 ticks     Sum: [1.7, 4.1]
addByValueInline:       128447 ticks    Sum: [1.7, 4.1]
addByRefInline:         90221 ticks     Sum: [1.7, 4.1]
addByConstRefInline:    90612 ticks     Sum: [1.7, 4.1]

-O1:
addByValue:             100967 ticks    Sum: [1.7, 4.1]
addByRef:               37254 ticks     Sum: [1.7, 4.1]
addByConstRef:          35842 ticks     Sum: [1.7, 4.1]
addByValueInline:       54780 ticks     Sum: [1.7, 4.1]
addByRefInline:         23334 ticks     Sum: [1.7, 4.1]
addByConstRefInline:    23495 ticks     Sum: [1.7, 4.1]

-O2:
addByValue:             63462 ticks     Sum: [1.7, 4.1]
addByRef:               38547 ticks     Sum: [1.7, 4.1]
addByConstRef:          38886 ticks     Sum: [1.7, 4.1]
addByValueInline:       82340 ticks     Sum: [1.7, 4.1]
addByRefInline:         26108 ticks     Sum: [1.7, 4.1]
addByConstRefInline:    21181 ticks     Sum: [1.7, 4.1]

-O3:
addByValue:             71995 ticks     Sum: [1.7, 4.1]
addByRef:               23043 ticks     Sum: [1.7, 4.1]
addByConstRef:          22283 ticks     Sum: [1.7, 4.1]
addByValueInline:       66817 ticks     Sum: [1.7, 4.1]
addByRefInline:         22082 ticks     Sum: [1.7, 4.1]
addByConstRefInline:    22653 ticks     Sum: [1.7, 4.1]

   Source for tests:

http://futureboy.us/temp/Interval.h
http://futureboy.us/temp/Interval.cc

-- 
  Alan Eliasen                 |  "When trouble is solved before it
  eliasen at mindspring.com       |    forms, who calls that clever?"
  http://futureboy.us/         |              --Sun Tzu


More information about the Std-interval mailing list