Thread View: net.lang.c++
1 messages
1 total messages
Started by Bjarne Stroustrup
Thu, 16 Oct 1986 17:05
Call timings
Author: Bjarne Stroustrup
Date: Thu, 16 Oct 1986 17:05
Date: Thu, 16 Oct 1986 17:05
60 lines
2274 bytes
2274 bytes
/*
here are some more timings showing function call costs:
*/
struct s {
int a;
virtual f1(); // virtual function
f3() { a++; return a; } // calls will be inlined
f4(); // member function
};
s::f1() { a++; return a;}
s::f4() { a++; return a;}
f2(s* p) {p->a++; return p->a; } // ``normal'' function
f5(register s* p) {p->a++; return p->a; } // register argument
int (*pf)(s*) = &f2;
main() {
s a;
register s* p = &a;
// for (register int i = 100000; 0<i; i--) p->f1();
// for (register int i = 100000; 0<i; i--) f2(p);
// for (register int i = 100000; 0<i; i--) p->f3();
// for (register int i = 100000; 0<i; i--) ;
// for (register int i = 100000; 0<i; i--) p->f4();
// for (register int i = 100000; 0<i; i--) (*pf)(p);
for (register int i = 100000; 0<i; i--) f5(p);
}
/*
Times in seconds, that is, the time needed per iteration in microseconds:
virtual member empty
fct fct inline fct loop
p->f1() f2(p) p->f3() p->f4() pf(p) f5(p) ;
VAX11/750: 41 32 5 41 31 40 3
VAX11/785: 21 15 2 20 16 20 1
sun3: 8 6 1 8 7 7 1
AT&T 3B20: 20 16 4 18 18 18 2
Amdahl5860: 1.1 1.0 .2 1.0 1.1 1.0 .2
AT&T6300+ (s) 30 26 12 28 28 27 10
AT&T6300+ (l) 46 42 20 42 42 41 10
A 6300+ is an AT clone (small and large models used for pointers, long i).
Release 1.1 was used except for the 6300+. There I used a toy.
So
(1) A virtual member call is as fast as a non-virtual member call.
(2) A member call is as fast as an equivalent non-member call.
(3) Inlining function calls can be very effective in speeding up code.
(4) Declaring "this" a register argument in a function with only little
use of "this" (as in the examples above) is a loss.
(5) VAX function calls are relatively expensive (not news).
Thanks to all who help time the examples.
*/
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads