stack variables and loops
Wesley Smith
wesley.hoke@gmail.com
Wed Mar 19 15:24:00 GMT 2008
Hey wow!
That's very informative.
thanks,
wes
On Wed, Mar 19, 2008 at 6:17 AM, Diego Novillo <dnovillo@google.com> wrote:
> 2008/3/19 Wesley Smith <wesley.hoke@gmail.com>:
>
>
> > Vec3 *v = vectors;
> > for(int i=0; i < 100; i++) {
> > Vec3 v_rand;
> > v_rand.random(); //make a random vector;
> >
> > *v++ += v_rand;
> > }
> >
> >
> > /////example 2
> >
> > Vec3 *v = vectors;
> > Vec3 v_rand;
> > for(int i=0; i < 100; i++) {
> > v_rand.random(); //make a random vector;
> >
> > *v++ += v_rand;
> > }
> >
> >
> > Clearly there are scope differences between the 2 examples, but in
> > terms of performance, how do compilers handle these situations.
>
> The first version needs to have a ctor and dtor call invoked on every
> iteration of the loop. Depending on what they do that will slow the
> code down. If you insert a printf() call in Vec3's constructor and
> destructor you'll see the difference. With GCC 4+ you can also use
> -fdump-tree-gimple to get a C-like representation of your program.
>
>
> Diego.
>
More information about the Gcc-help
mailing list