On Mon, Sep 15, 2014 at 2:55 AM, Sven Barth <pascaldra...@googlemail.com> wrote: > On 14.09.2014 18:05, Philippe wrote: >> > > Take this example: > > === code begin === > (...) > > procedure TestWith; > var > p: PTest; > begin > New(p); > > with p^ do begin > Prop1 := 42; > Prop2 := 21; > end; > > Dispose(p); > end; > > procedure TestWithout; > var > p: PTest; > begin > New(p); > > p^.Prop1 := 42; > p^.Prop2 := 21; > > Dispose(p); > end; > > begin > > end. > > === code end === > > This is the relevant code generated for TestWith: > > === asm begin === (...) > === asm end === > > As you can see the expression p^ is only evaluated once in the TestWith case > while it's evaluated twice in the TestWithout one. So it's only minimally > faster in this example (one less memory access), but if you use enough > members of TTest it a more or less tight loop it might even be noticeable. > > Regards, > Sven
I expected FPC would optimize this (with just -O1) :-( -Flávio _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal