Sorry, forgot the compiler version. gcc (GCC) 3.3.4 20040623 (Gentoo Linux 3.3.4-r1, ssp-3.3.2-2, pie-8.7.6)
On Wed, 2 Feb 2005 01:12:04 +0000, Mike Rylander <[EMAIL PROTECTED]> wrote: > On Tue, 01 Feb 2005 16:23:56 -0500, Tom Lane <[EMAIL PROTECTED]> wrote: > > a_ogawa <[EMAIL PROTECTED]> writes: > > > I made the test program to measure the effect of this macro. > > > > Well, if we're going to be tense about this, let's actually be tense > > about it. Your test program isn't a great model for what's going to > > happen in fmgr.c, because you've designed it so that Nargs cannot be > > known at compile time. In the fmgr routines, Nargs is certainly a > > compile-time constant, and so implementations that can exploit that > > will have an advantage. > > > > <big snip> > > Here are some numbers for AMD64 (gcc -O2 -I > /opt/include/postgresql/server/ pg_test.c -o pg_test): > > [EMAIL PROTECTED] miker $ time ./pg_test -memset 1000000000 > test MemSetLoop(2): 1000000000 > > real 1m15.896s > user 1m15.881s > sys 0m0.006s > [EMAIL PROTECTED] miker $ time ./pg_test -origmacro 1000000000 > test OrigMacro(2): 1000000000 > > real 0m4.217s > user 0m4.215s > sys 0m0.001s > [EMAIL PROTECTED] miker $ time ./pg_test -setmacro 1000000000 > test SetMacro(2): 1000000000 > > real 0m4.217s > user 0m4.216s > sys 0m0.001s > [EMAIL PROTECTED] miker $ time ./pg_test -unrolled 1000000000 > test Unrolled(2): 1000000000 > > real 0m4.218s > user 0m4.215s > sys 0m0.002s > > and now with -O6: > > [EMAIL PROTECTED] miker $ time ./pg_test -memset 1000000000 > test MemSetLoop(2): 1000000000 > > real 1m13.624s > user 1m13.542s > sys 0m0.001s > [EMAIL PROTECTED] miker $ time ./pg_test -origmacro 1000000000 > test OrigMacro(2): 1000000000 > > real 0m2.929s > user 0m2.926s > sys 0m0.001s > [EMAIL PROTECTED] miker $ time ./pg_test -setmacro 1000000000 > test SetMacro(2): 1000000000 > > real 0m2.929s > user 0m2.926s > sys 0m0.000s > [EMAIL PROTECTED] miker $ time ./pg_test -unrolled 1000000000 > test Unrolled(2): 1000000000 > > real 0m2.510s > user 0m2.508s > sys 0m0.001s > > Now with NARGS = 5, -O2: > > [EMAIL PROTECTED] miker $ time ./pg_test -memset 1000000000 > test MemSetLoop(5): 1000000000 > > real 1m15.204s > user 1m15.175s > sys 0m0.002s > [EMAIL PROTECTED] miker $ time ./pg_test -origmacro 1000000000 > test OrigMacro(5): 1000000000 > > real 0m10.027s > user 0m10.022s > sys 0m0.001s > [EMAIL PROTECTED] miker $ time ./pg_test -setmacro 1000000000 > test SetMacro(5): 1000000000 > > real 0m4.177s > user 0m4.177s > sys 0m0.000s > [EMAIL PROTECTED] miker $ time ./pg_test -unrolled 1000000000 > test Unrolled(5): 1000000000 > > real 0m5.013s > user 0m5.011s > sys 0m0.000s > > And once more, with -O6: > > [EMAIL PROTECTED] miker $ time ./pg_test -memset 1000000000 > test MemSetLoop(5): 1000000000 > > real 1m47.090s > user 1m46.972s > sys 0m0.000s > [EMAIL PROTECTED] miker $ time ./pg_test -origmacro 1000000000 > test OrigMacro(5): 1000000000 > > real 0m8.367s > user 0m8.358s > sys 0m0.000s > [EMAIL PROTECTED] miker $ time ./pg_test -setmacro 1000000000 > test SetMacro(5): 1000000000 > > real 0m3.349s > user 0m3.345s > sys 0m0.000s > [EMAIL PROTECTED] miker $ time ./pg_test -unrolled 1000000000 > test Unrolled(5): 1000000000 > > real 0m3.347s > user 0m3.343s > sys 0m0.000s > > > Hope the numbers help! > > -- > Mike Rylander > [EMAIL PROTECTED] > GPLS -- PINES Development > Database Developer > http://open-ils.org > -- Mike Rylander [EMAIL PROTECTED] GPLS -- PINES Development Database Developer http://open-ils.org ---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]