001
02.09.2006, 17:57 Uhr
FloSoft
Medialer Over-Flow (Administrator)
|
Hi, schau dir doch mal den Assembler-output deines Programms an, einmal mit array und einmal mit 3 einzelnen variablen.
C++: |
...
.globl a .type a, @function a: pushl %ebp movl %esp, %ebp subl $24, %esp movl $5, -24(%ebp) // x[0] = 5 movl $10, -20(%ebp) // x[1] = 10 movl $15, -16(%ebp) // x[2] = 15 movl -20(%ebp), %eax // zugriff "x[0]" addl -24(%ebp), %eax // zugriff "x[1]" addl -16(%ebp), %eax // zugriff "x[2]" leave ret .size a, .-a .globl b .type b, @function b: pushl %ebp movl %esp, %ebp subl $12, %esp movl $5, -4(%ebp) // x = 5 movl $10, -8(%ebp) // y = 10 movl $15, -12(%ebp) // z ) 15 movl -8(%ebp), %eax // zugriff "x" addl -4(%ebp), %eax // zugriff "y" addl -12(%ebp), %eax // zugriff "z" leave ret .size b, .-b
...
|
für
C++: |
int a(void) { int x[3] = {5, 10, 15}; return x[0] + x[1] + x[2]; }
int b(void) { int x = 5, y = 10, z = 15; return x + y + z; } // ...
|
außer die Stackadressen ist in dem Fall der zugriff identisch
In deinem Beispiel sollte es keine Auswirkungen haben, bei diversen anderen gibt es natürlich kleine Tricks um den zugriff etwas zu beschleunigen. -- class God : public ChuckNorris { }; Dieser Post wurde am 02.09.2006 um 18:03 Uhr von FloSoft editiert. |