This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

DT_GNU_HASH benchmark results


On Wed, Jul 05, 2006 at 11:04:38AM +0200, Jakub Jelinek wrote:
> I'll try to benchmark both of these variants and see if it is really worth
> it.

I've repeated the same tests as I've reported on Jun, 28th, this time
in 2 new different chroots.
One had (almost) all the dependent libraries built with --hash-style=both
2006-07-03 layout of .gnu.hash (i.e.
nbuckets|symidx|nbuckets*chainoff|hash0&~1|hash1&~1|hash2bitor1|...|
) - take2 in the results, the other had the enlarged buckets array, i.e.
nbuckets|symidx|nbuckets*<chainoff|bitmask>|hash0&~1|hash1&~1|hash2bitor1|...|
where bitmask would contain bit N set there are any hashes in the chain such
that ((hash >> 5) & 31) == N.  It is not using the LS bits, because those
contain the sum of all characters in the symbol name, which isn't ideal.
Binutils guaranteed that nbuckets is at least 2 and never a multiple of 32
- this tree is take3 in the results.

take3 reduces a lot the number of L1 misses, on the other side slightly
increases L2 misses (supposedly because .gnu.hash is now bigger),
but overall it sounds like take3 is desirable.

Will now do a few small changes suggested by Uli late last night and then
post the final patches.  I don't want to make nbuckets a power of two,
the division really isn't very expensive on contemporary CPUs and we don't
want multiple of 32 nbuckets for the bitmask trick to work properly.

cat > a.c <<\EOF
cat /tmp/a.c
#include <dlfcn.h>
const char *libs[] = {
"libvclplug_gtk680lx.so", "libvclplug_gen680lx.so", "libnss_files.so.2", "libGL.so.1", "servicemgr.uno.so",
"shlibloader.uno.so", "simplereg.uno.so", "nestedreg.uno.so", "typemgr.uno.so", "implreg.uno.so",
"security.uno.so", "libreg.so.3", "libstore.so.3", "regtypeprov.uno.so", "configmgr2.uno.so",
"typeconverter.uno.so", "gconfbe1.uno.so", "behelper.uno.so", "sax.uno.so", "localebe1.uno.so",
"uriproc.uno.so", "libspl680lx.so", "libucb1.so", "ucpgvfs1.uno.so", "libgcc3_uno.so", "libpackage2.so",
"libfileacc.so", "libuui680lx.so", "libfilterconfig1.so", "libdtransX11680lx.so", "i18npool.uno.so",
"liblocaledata_en.so", "fsstorage.uno.so", "libxstor.so", "libdbtools680lx.so", "libcups.so.2",
"libgnutls.so.13", "libgcrypt.so.11", "libgpg-error.so.0", "libmcnttype.so", "libucpchelp1.so",
"svtmisc.uno.so" };
int
main (int argc, char **argv)
{
  int i;
  void *h;
  int flags = RTLD_LAZY;
  if (argv[1][0] == 'g')
    flags |= RTLD_GLOBAL;
  for (i = 0; i < sizeof (libs) / sizeof (libs[0]); ++i)
    h = dlopen (libs[i], flags);
  return 0;
}
EOF
gcc -g -O2 -o a a.c -Wl,-rpath,/usr/lib64/openoffice.org2.0/program/ \
  -L/usr/lib64/openoffice.org2.0/program/ -lsoffice -lsw680lx -lsvx680lx -lstdc++ -lm -shared-libgcc
for V in local global; do for M in '' 'export LD_X=1' 'export LD_BIND_NOW=1' 'export LD_X=1 LD_BIND_NOW=1'; \
  do ( for i in 1 2 3 4; do eval $M; time ./a $V; done 2>&1 > /dev/null | \
    awk 'BEGIN { printf "'"$V $M"'\t" } /^real/ { printf "%s ", $2 } END { printf "\n" }' ); done; done

take2
local					0m0.247s 0m0.244s 0m0.243s 0m0.245s
local export LD_X=1			0m0.541s 0m0.541s 0m0.540s 0m0.542s
local export LD_BIND_NOW=1		0m0.455s 0m0.451s 0m0.449s 0m0.452s
local export LD_X=1 LD_BIND_NOW=1	0m1.102s 0m1.100s 0m1.099s 0m1.101s
global					0m0.284s 0m0.281s 0m0.279s 0m0.279s
global export LD_X=1			0m0.623s 0m0.621s 0m0.622s 0m0.620s
global export LD_BIND_NOW=1		0m0.518s 0m0.514s 0m0.515s 0m0.517s
global export LD_X=1 LD_BIND_NOW=1	0m1.250s 0m1.246s 0m1.247s 0m1.246s

take3
local					0m0.212s 0m0.211s 0m0.211s 0m0.212s
local export LD_X=1			0m0.556s 0m0.579s 0m0.583s 0m0.577s
local export LD_BIND_NOW=1		0m0.391s 0m0.385s 0m0.383s 0m0.384s
local export LD_X=1 LD_BIND_NOW=1	0m1.124s 0m1.157s 0m1.178s 0m1.169s
global					0m0.241s 0m0.240s 0m0.240s 0m0.240s
global export LD_X=1			0m0.642s 0m0.665s 0m0.662s 0m0.661s
global export LD_BIND_NOW=1		0m0.438s 0m0.438s 0m0.434s 0m0.436s
global export LD_X=1 LD_BIND_NOW=1	0m1.280s 0m1.326s 0m1.318s 0m1.321s

for V in local global; do for M in '' 'export LD_X=1' 'export LD_BIND_NOW=1' 'export LD_X=1 LD_BIND_NOW=1'; \
  do ( echo "$V $M"; eval $M; valgrind --tool=cachegrind ./a $V 2>&1 > /dev/null | sed -n '/== I   refs/,$p' ); \
    done; done

take2
local 
==5984== I   refs:      206,039,807
==5984== I1  misses:         11,336
==5984== L2i misses:         10,079
==5984== I1  miss rate:        0.00%
==5984== L2i miss rate:        0.00%
==5984== 
==5984== D   refs:       75,347,721  (58,986,205 rd + 16,361,516 wr)
==5984== D1  misses:      4,444,606  ( 4,290,272 rd +    154,334 wr)
==5984== L2d misses:        506,231  (   413,982 rd +     92,249 wr)
==5984== D1  miss rate:         5.8% (       7.2%   +        0.9%  )
==5984== L2d miss rate:         0.6% (       0.7%   +        0.5%  )
==5984== 
==5984== L2 refs:         4,455,942  ( 4,301,608 rd +    154,334 wr)
==5984== L2 misses:         516,310  (   424,061 rd +     92,249 wr)
==5984== L2 miss rate:          0.1% (       0.1%   +        0.5%  )
local export LD_X=1
==5988== I   refs:      306,750,046
==5988== I1  misses:         11,334
==5988== L2i misses:         10,489
==5988== I1  miss rate:        0.00%
==5988== L2i miss rate:        0.00%
==5988== 
==5988== D   refs:      127,819,504  (98,014,006 rd + 29,805,498 wr)
==5988== D1  misses:      9,632,662  ( 9,469,418 rd +    163,244 wr)
==5988== L2d misses:      3,029,744  ( 2,924,102 rd +    105,642 wr)
==5988== D1  miss rate:         7.5% (       9.6%   +        0.5%  )
==5988== L2d miss rate:         2.3% (       2.9%   +        0.3%  )
==5988== 
==5988== L2 refs:         9,643,996  ( 9,480,752 rd +    163,244 wr)
==5988== L2 misses:       3,040,233  ( 2,934,591 rd +    105,642 wr)
==5988== L2 miss rate:          0.6% (       0.7%   +        0.3%  )
local export LD_BIND_NOW=1
==5992== I   refs:      399,954,112
==5992== I1  misses:         10,955
==5992== L2i misses:          9,868
==5992== I1  miss rate:        0.00%
==5992== L2i miss rate:        0.00%
==5992== 
==5992== D   refs:      149,744,874  (116,766,890 rd + 32,977,984 wr)
==5992== D1  misses:      9,146,137  (  8,945,587 rd +    200,550 wr)
==5992== L2d misses:        673,564  (    573,758 rd +     99,806 wr)
==5992== D1  miss rate:         6.1% (        7.6%   +        0.6%  )
==5992== L2d miss rate:         0.4% (        0.4%   +        0.3%  )
==5992== 
==5992== L2 refs:         9,157,092  (  8,956,542 rd +    200,550 wr)
==5992== L2 misses:         683,432  (    583,626 rd +     99,806 wr)
==5992== L2 miss rate:          0.1% (        0.1%   +        0.3%  )
local export LD_X=1 LD_BIND_NOW=1
==5996== I   refs:      612,477,609
==5996== I1  misses:         10,953
==5996== L2i misses:         10,129
==5996== I1  miss rate:        0.00%
==5996== L2i miss rate:        0.00%
==5996== 
==5996== D   refs:      261,643,870  (199,575,161 rd + 62,068,709 wr)
==5996== D1  misses:     20,389,219  ( 20,198,114 rd +    191,105 wr)
==5996== L2d misses:      6,306,926  (  6,193,450 rd +    113,476 wr)
==5996== D1  miss rate:         7.7% (       10.1%   +        0.3%  )
==5996== L2d miss rate:         2.4% (        3.1%   +        0.1%  )
==5996== 
==5996== L2 refs:        20,400,172  ( 20,209,067 rd +    191,105 wr)
==5996== L2 misses:       6,317,055  (  6,203,579 rd +    113,476 wr)
==5996== L2 miss rate:          0.7% (        0.7%   +        0.1%  )
global 
==6000== I   refs:      221,176,210
==6000== I1  misses:         11,605
==6000== L2i misses:         10,263
==6000== I1  miss rate:        0.00%
==6000== L2i miss rate:        0.00%
==6000== 
==6000== D   refs:       82,903,948  (64,808,080 rd + 18,095,868 wr)
==6000== D1  misses:      6,361,596  ( 6,203,856 rd +    157,740 wr)
==6000== L2d misses:        534,670  (   441,893 rd +     92,777 wr)
==6000== D1  miss rate:         7.6% (       9.5%   +        0.8%  )
==6000== L2d miss rate:         0.6% (       0.6%   +        0.5%  )
==6000== 
==6000== L2 refs:         6,373,201  ( 6,215,461 rd +    157,740 wr)
==6000== L2 misses:         544,933  (   452,156 rd +     92,777 wr)
==6000== L2 miss rate:          0.1% (       0.1%   +        0.5%  )
global export LD_X=1
==6004== I   refs:      331,769,024
==6004== I1  misses:         11,603
==6004== L2i misses:         10,705
==6004== I1  miss rate:        0.00%
==6004== L2i miss rate:        0.00%
==6004== 
==6004== D   refs:      140,927,783  (107,887,754 rd + 33,040,029 wr)
==6004== D1  misses:     12,061,356  ( 11,896,678 rd +    164,678 wr)
==6004== L2d misses:      3,511,000  (  3,404,823 rd +    106,177 wr)
==6004== D1  miss rate:         8.5% (       11.0%   +        0.4%  )
==6004== L2d miss rate:         2.4% (        3.1%   +        0.3%  )
==6004== 
==6004== L2 refs:        12,072,959  ( 11,908,281 rd +    164,678 wr)
==6004== L2 misses:       3,521,705  (  3,415,528 rd +    106,177 wr)
==6004== L2 miss rate:          0.7% (        0.7%   +        0.3%  )
global export LD_BIND_NOW=1
==6008== I   refs:      427,418,120
==6008== I1  misses:         11,204
==6008== L2i misses:         10,041
==6008== I1  miss rate:        0.00%
==6008== L2i miss rate:        0.00%
==6008== 
==6008== D   refs:      163,419,797  (127,305,645 rd + 36,114,152 wr)
==6008== D1  misses:     12,599,471  ( 12,390,660 rd +    208,811 wr)
==6008== L2d misses:        721,852  (    621,527 rd +    100,325 wr)
==6008== D1  miss rate:         7.7% (        9.7%   +        0.5%  )
==6008== L2d miss rate:         0.4% (        0.4%   +        0.2%  )
==6008== 
==6008== L2 refs:        12,610,675  ( 12,401,864 rd +    208,811 wr)
==6008== L2 misses:         731,893  (    631,568 rd +    100,325 wr)
==6008== L2 miss rate:          0.1% (        0.1%   +        0.2%  )
global export LD_X=1 LD_BIND_NOW=1
==6012== I   refs:      657,379,875
==6012== I1  misses:         11,204
==6012== L2i misses:         10,320
==6012== I1  miss rate:        0.00%
==6012== L2i miss rate:        0.00%
==6012== 
==6012== D   refs:      285,228,684  (217,319,888 rd + 67,908,796 wr)
==6012== D1  misses:     24,774,666  ( 24,579,918 rd +    194,748 wr)
==6012== L2d misses:      7,207,303  (  7,093,279 rd +    114,024 wr)
==6012== D1  miss rate:         8.6% (       11.3%   +        0.2%  )
==6012== L2d miss rate:         2.5% (        3.2%   +        0.1%  )
==6012== 
==6012== L2 refs:        24,785,870  ( 24,591,122 rd +    194,748 wr)
==6012== L2 misses:       7,217,623  (  7,103,599 rd +    114,024 wr)
==6012== L2 miss rate:          0.7% (        0.8%   +        0.1%  )

take3
local 
==5139== I   refs:      192,860,473
==5139== I1  misses:         12,387
==5139== L2i misses:         10,120
==5139== I1  miss rate:        0.00%
==5139== L2i miss rate:        0.00%
==5139== 
==5139== D   refs:       72,521,147  (56,099,943 rd + 16,421,204 wr)
==5139== D1  misses:      3,413,455  ( 3,256,926 rd +    156,529 wr)
==5139== L2d misses:        525,073  (   433,257 rd +     91,816 wr)
==5139== D1  miss rate:         4.7% (       5.8%   +        0.9%  )
==5139== L2d miss rate:         0.7% (       0.7%   +        0.5%  )
==5139== 
==5139== L2 refs:         3,425,842  ( 3,269,313 rd +    156,529 wr)
==5139== L2 misses:         535,193  (   443,377 rd +     91,816 wr)
==5139== L2 miss rate:          0.2% (       0.1%   +        0.5%  )
local export LD_X=1
==5143== I   refs:      307,040,928
==5143== I1  misses:         12,381
==5143== L2i misses:         10,684
==5143== I1  miss rate:        0.00%
==5143== L2i miss rate:        0.00%
==5143== 
==5143== D   refs:      127,932,904  (98,064,136 rd + 29,868,768 wr)
==5143== D1  misses:      9,484,151  ( 9,320,536 rd +    163,615 wr)
==5143== L2d misses:      3,014,606  ( 2,909,020 rd +    105,586 wr)
==5143== D1  miss rate:         7.4% (       9.5%   +        0.5%  )
==5143== L2d miss rate:         2.3% (       2.9%   +        0.3%  )
==5143== 
==5143== L2 refs:         9,496,532  ( 9,332,917 rd +    163,615 wr)
==5143== L2 misses:       3,025,290  ( 2,919,704 rd +    105,586 wr)
==5143== L2 miss rate:          0.6% (       0.7%   +        0.3%  )
local export LD_BIND_NOW=1
==5147== I   refs:      371,723,469
==5147== I1  misses:         11,941
==5147== L2i misses:          9,909
==5147== I1  miss rate:        0.00%
==5147== L2i miss rate:        0.00%
==5147== 
==5147== D   refs:      143,691,228  (110,589,376 rd + 33,101,852 wr)
==5147== D1  misses:      6,960,878  (  6,773,347 rd +    187,531 wr)
==5147== L2d misses:        721,548  (    622,166 rd +     99,382 wr)
==5147== D1  miss rate:         4.8% (        6.1%   +        0.5%  )
==5147== L2d miss rate:         0.5% (        0.5%   +        0.3%  )
==5147== 
==5147== L2 refs:         6,972,819  (  6,785,288 rd +    187,531 wr)
==5147== L2 misses:         731,457  (    632,075 rd +     99,382 wr)
==5147== L2 miss rate:          0.1% (        0.1%   +        0.3%  )
local export LD_X=1 LD_BIND_NOW=1
==5151== I   refs:      613,042,464
==5151== I1  misses:         11,940
==5151== L2i misses:         10,409
==5151== I1  miss rate:        0.00%
==5151== L2i miss rate:        0.00%
==5151== 
==5151== D   refs:      261,868,433  (199,669,277 rd + 62,199,156 wr)
==5151== D1  misses:     20,184,839  ( 19,970,673 rd +    214,166 wr)
==5151== L2d misses:      6,271,011  (  6,157,540 rd +    113,471 wr)
==5151== D1  miss rate:         7.7% (       10.0%   +        0.3%  )
==5151== L2d miss rate:         2.3% (        3.0%   +        0.1%  )
==5151== 
==5151== L2 refs:        20,196,779  ( 19,982,613 rd +    214,166 wr)
==5151== L2 misses:       6,281,420  (  6,167,949 rd +    113,471 wr)
==5151== L2 miss rate:          0.7% (        0.7%   +        0.1%  )
global 
==5155== I   refs:      206,478,881
==5155== I1  misses:         12,681
==5155== L2i misses:         10,302
==5155== I1  miss rate:        0.00%
==5155== L2i miss rate:        0.00%
==5155== 
==5155== D   refs:       79,796,888  (61,641,432 rd + 18,155,456 wr)
==5155== D1  misses:      5,204,611  ( 5,046,697 rd +    157,914 wr)
==5155== L2d misses:        551,003  (   458,783 rd +     92,220 wr)
==5155== D1  miss rate:         6.5% (       8.1%   +        0.8%  )
==5155== L2d miss rate:         0.6% (       0.7%   +        0.5%  )
==5155== 
==5155== L2 refs:         5,217,292  ( 5,059,378 rd +    157,914 wr)
==5155== L2 misses:         561,305  (   469,085 rd +     92,220 wr)
==5155== L2 miss rate:          0.1% (       0.1%   +        0.5%  )
global export LD_X=1
==5159== I   refs:      332,044,535
==5159== I1  misses:         12,675
==5159== L2i misses:         11,000
==5159== I1  miss rate:        0.00%
==5159== L2i miss rate:        0.00%
==5159== 
==5159== D   refs:      141,034,475  (107,932,723 rd + 33,101,752 wr)
==5159== D1  misses:     11,988,824  ( 11,824,286 rd +    164,538 wr)
==5159== L2d misses:      3,491,915  (  3,385,840 rd +    106,075 wr)
==5159== D1  miss rate:         8.5% (       10.9%   +        0.4%  )
==5159== L2d miss rate:         2.4% (        3.1%   +        0.3%  )
==5159== 
==5159== L2 refs:        12,001,499  ( 11,836,961 rd +    164,538 wr)
==5159== L2 misses:       3,502,915  (  3,396,840 rd +    106,075 wr)
==5159== L2 miss rate:          0.7% (        0.7%   +        0.3%  )
global export LD_BIND_NOW=1
==5165== I   refs:      396,437,452
==5165== I1  misses:         12,211
==5165== L2i misses:         10,092
==5165== I1  miss rate:        0.00%
==5165== L2i miss rate:        0.00%
==5165== 
==5165== D   refs:      156,857,604  (120,619,707 rd + 36,237,897 wr)
==5165== D1  misses:     10,195,672  ( 10,010,304 rd +    185,368 wr)
==5165== L2d misses:        767,253  (    667,448 rd +     99,805 wr)
==5165== D1  miss rate:         6.4% (        8.2%   +        0.5%  )
==5165== L2d miss rate:         0.4% (        0.5%   +        0.2%  )
==5165== 
==5165== L2 refs:        10,207,883  ( 10,022,515 rd +    185,368 wr)
==5165== L2 misses:         777,345  (    677,540 rd +     99,805 wr)
==5165== L2 miss rate:          0.1% (        0.1%   +        0.2%  )
global export LD_X=1 LD_BIND_NOW=1
==5169== I   refs:      657,927,738
==5169== I1  misses:         12,211
==5169== L2i misses:         10,669
==5169== I1  miss rate:        0.00%
==5169== L2i miss rate:        0.00%
==5169== 
==5169== D   refs:      285,446,109  (217,408,377 rd + 68,037,732 wr)
==5169== D1  misses:     24,704,584  ( 24,488,640 rd +    215,944 wr)
==5169== L2d misses:      7,165,792  (  7,051,869 rd +    113,923 wr)
==5169== D1  miss rate:         8.6% (       11.2%   +        0.3%  )
==5169== L2d miss rate:         2.5% (        3.2%   +        0.1%  )
==5169== 
==5169== L2 refs:        24,716,795  ( 24,500,851 rd +    215,944 wr)
==5169== L2 misses:       7,176,461  (  7,062,538 rd +    113,923 wr)
==5169== L2 miss rate:          0.7% (        0.8%   +        0.1%  )

for V in local global; do for M in '' '-E LD_X=1' '-E LD_BIND_NOW=1' '-E LD_X=1 -E LD_BIND_NOW=1'; \
  do ( echo "$V $M"; ./timing $M ./a $V ); done; done

take2
local
Strip out best and worst realtime result
minimum: 0.241084000 sec real / 0.000055769 sec CPU
maximum: 0.248671000 sec real / 0.000073555 sec CPU
average: 0.242298357 sec real / 0.000064487 sec CPU
stdev  : 0.001100542 sec real / 0.000003072 sec CPU
local -E LD_X=1
optarg="LD_X=1"
Strip out best and worst realtime result
minimum: 0.537341000 sec real / 0.000066888 sec CPU
maximum: 0.545505000 sec real / 0.000082234 sec CPU
average: 0.539162642 sec real / 0.000073861 sec CPU
stdev  : 0.000877479 sec real / 0.000001513 sec CPU
local -E LD_BIND_NOW=1
optarg="LD_BIND_NOW=1"
Strip out best and worst realtime result
minimum: 0.447226000 sec real / 0.000048417 sec CPU
maximum: 0.454843000 sec real / 0.000074707 sec CPU
average: 0.449379357 sec real / 0.000069658 sec CPU
stdev  : 0.001006922 sec real / 0.000004595 sec CPU
local -E LD_X=1 -E LD_BIND_NOW=1
optarg="LD_X=1"
optarg="LD_BIND_NOW=1"
Strip out best and worst realtime result
minimum: 1.096843000 sec real / 0.000057979 sec CPU
maximum: 1.108830000 sec real / 0.000072577 sec CPU
average: 1.099736928 sec real / 0.000064127 sec CPU
stdev  : 0.002059076 sec real / 0.000001466 sec CPU
global
Strip out best and worst realtime result
minimum: 0.277778000 sec real / 0.000056801 sec CPU
maximum: 0.287137000 sec real / 0.000082176 sec CPU
average: 0.279447607 sec real / 0.000072339 sec CPU
stdev  : 0.001470227 sec real / 0.000004583 sec CPU
global -E LD_X=1
optarg="LD_X=1"
Strip out best and worst realtime result
minimum: 0.618532000 sec real / 0.000065063 sec CPU
maximum: 0.637458000 sec real / 0.000085827 sec CPU
average: 0.623114250 sec real / 0.000074015 sec CPU
stdev  : 0.004356701 sec real / 0.000003608 sec CPU
global -E LD_BIND_NOW=1
optarg="LD_BIND_NOW=1"
Strip out best and worst realtime result
minimum: 0.513478000 sec real / 0.000062431 sec CPU
maximum: 0.524921000 sec real / 0.000076080 sec CPU
average: 0.517233357 sec real / 0.000072163 sec CPU
stdev  : 0.003029441 sec real / 0.000002879 sec CPU
global -E LD_X=1 -E LD_BIND_NOW=1
optarg="LD_X=1"
optarg="LD_BIND_NOW=1"
Strip out best and worst realtime result
minimum: 1.243250000 sec real / 0.000055890 sec CPU
maximum: 1.252460000 sec real / 0.000073371 sec CPU
average: 1.245845642 sec real / 0.000063768 sec CPU
stdev  : 0.001419068 sec real / 0.000002191 sec CPU

take3
local
Strip out best and worst realtime result
minimum: 0.207072000 sec real / 0.000059167 sec CPU
maximum: 0.213904000 sec real / 0.000073101 sec CPU
average: 0.208218392 sec real / 0.000064074 sec CPU
stdev  : 0.001025499 sec real / 0.000001562 sec CPU
local -E LD_X=1
optarg="LD_X=1"
Strip out best and worst realtime result
minimum: 0.544442000 sec real / 0.000065068 sec CPU
maximum: 0.575327000 sec real / 0.000083959 sec CPU
average: 0.552129321 sec real / 0.000074002 sec CPU
stdev  : 0.003887680 sec real / 0.000002200 sec CPU
local -E LD_BIND_NOW=1
optarg="LD_BIND_NOW=1"
Strip out best and worst realtime result
minimum: 0.374172000 sec real / 0.000064850 sec CPU
maximum: 0.379919000 sec real / 0.000074617 sec CPU
average: 0.376311357 sec real / 0.000072356 sec CPU
stdev  : 0.001204166 sec real / 0.000002292 sec CPU
local -E LD_X=1 -E LD_BIND_NOW=1
optarg="LD_X=1"
optarg="LD_BIND_NOW=1"
Strip out best and worst realtime result
minimum: 1.101936000 sec real / 0.000059454 sec CPU
maximum: 1.177582000 sec real / 0.000070216 sec CPU
average: 1.118296642 sec real / 0.000064014 sec CPU
stdev  : 0.010025261 sec real / 0.000001281 sec CPU
global
Strip out best and worst realtime result
minimum: 0.236546000 sec real / 0.000057142 sec CPU
maximum: 0.246220000 sec real / 0.000065733 sec CPU
average: 0.239646714 sec real / 0.000063370 sec CPU
stdev  : 0.002348865 sec real / 0.000002093 sec CPU
global -E LD_X=1
optarg="LD_X=1"
Strip out best and worst realtime result
minimum: 0.630578000 sec real / 0.000063307 sec CPU
maximum: 0.662570000 sec real / 0.000079459 sec CPU
average: 0.642624142 sec real / 0.000073384 sec CPU
stdev  : 0.006348274 sec real / 0.000003411 sec CPU
global -E LD_BIND_NOW=1
optarg="LD_BIND_NOW=1"
Strip out best and worst realtime result
minimum: 0.428218000 sec real / 0.000062262 sec CPU
maximum: 0.437902000 sec real / 0.000076227 sec CPU
average: 0.431983142 sec real / 0.000070362 sec CPU
stdev  : 0.002499419 sec real / 0.000002465 sec CPU
global -E LD_X=1 -E LD_BIND_NOW=1
optarg="LD_X=1"
optarg="LD_BIND_NOW=1"
Strip out best and worst realtime result
minimum: 1.255278000 sec real / 0.000059120 sec CPU
maximum: 1.337006000 sec real / 0.000072259 sec CPU
average: 1.281770035 sec real / 0.000064085 sec CPU
stdev  : 0.013042264 sec real / 0.000001631 sec CPU

/usr/sbin/prelink -vmR ./a
for V in local global; do for M in '' 'export LD_X=1' 'export LD_BIND_NOW=1' 'export LD_X=1 LD_BIND_NOW=1'; \
  do ( for i in 1 2 3 4; do eval $M; time ./a $V; done 2>&1 > /dev/null | \
    awk 'BEGIN { printf "'"$V $M"'\t" } /^real/ { printf "%s ", $2 } END { printf "\n" }' ); done; done

take2
local					0m0.134s 0m0.132s 0m0.131s 0m0.131s
local export LD_X=1			0m0.270s 0m0.267s 0m0.268s 0m0.267s
local export LD_BIND_NOW=1		0m0.228s 0m0.226s 0m0.226s 0m0.226s
local export LD_X=1 LD_BIND_NOW=1	0m0.507s 0m0.499s 0m0.500s 0m0.499s
global					0m0.167s 0m0.165s 0m0.165s 0m0.166s
global export LD_X=1			0m0.347s 0m0.344s 0m0.345s 0m0.344s
global export LD_BIND_NOW=1		0m0.289s 0m0.288s 0m0.287s 0m0.286s
global export LD_X=1 LD_BIND_NOW=1	0m0.657s 0m0.642s 0m0.641s 0m0.640s

take3
local					0m0.112s 0m0.109s 0m0.109s 0m0.108s
local export LD_X=1			0m0.268s 0m0.273s 0m0.265s 0m0.264s
local export LD_BIND_NOW=1		0m0.183s 0m0.180s 0m0.181s 0m0.180s
local export LD_X=1 LD_BIND_NOW=1	0m0.506s 0m0.494s 0m0.504s 0m0.497s
global					0m0.140s 0m0.136s 0m0.137s 0m0.137s
global export LD_X=1			0m0.353s 0m0.346s 0m0.345s 0m0.343s
global export LD_BIND_NOW=1		0m0.235s 0m0.232s 0m0.233s 0m0.231s
global export LD_X=1 LD_BIND_NOW=1	0m0.647s 0m0.640s 0m0.645s 0m0.643s

# valgrind --tool=cachegrind stats not provided for prelinked testcase,
# as valgrind apparently uses LD_PRELOAD internally and thus prevents
# prelinking.

for V in local global; do for M in '' '-E LD_X=1' '-E LD_BIND_NOW=1' '-E LD_X=1 -E LD_BIND_NOW=1'; \
  do ( echo "$V $M"; ./timing $M ./a $V ); done; done

take2
local
Strip out best and worst realtime result
minimum: 0.129763000 sec real / 0.000051852 sec CPU
maximum: 0.133951000 sec real / 0.000067645 sec CPU
average: 0.130537178 sec real / 0.000062305 sec CPU
stdev  : 0.000481749 sec real / 0.000001382 sec CPU
local -E LD_X=1
optarg="LD_X=1"
Strip out best and worst realtime result
minimum: 0.264604000 sec real / 0.000062178 sec CPU
maximum: 0.274639000 sec real / 0.000085800 sec CPU
average: 0.267029107 sec real / 0.000071314 sec CPU
stdev  : 0.001715647 sec real / 0.000003884 sec CPU
local -E LD_BIND_NOW=1
optarg="LD_BIND_NOW=1"
Strip out best and worst realtime result
minimum: 0.224145000 sec real / 0.000056408 sec CPU
maximum: 0.233185000 sec real / 0.000063897 sec CPU
average: 0.225996464 sec real / 0.000062388 sec CPU
stdev  : 0.000731068 sec real / 0.000001113 sec CPU
local -E LD_X=1 -E LD_BIND_NOW=1
optarg="LD_X=1"
optarg="LD_BIND_NOW=1"
Strip out best and worst realtime result
minimum: 0.497700000 sec real / 0.000064336 sec CPU
maximum: 0.506782000 sec real / 0.000082528 sec CPU
average: 0.500931285 sec real / 0.000072029 sec CPU
stdev  : 0.001461852 sec real / 0.000002125 sec CPU
global
Strip out best and worst realtime result
minimum: 0.163840000 sec real / 0.000054914 sec CPU
maximum: 0.170908000 sec real / 0.000069313 sec CPU
average: 0.164924250 sec real / 0.000061514 sec CPU
stdev  : 0.000564632 sec real / 0.000001893 sec CPU
global -E LD_X=1
optarg="LD_X=1"
Strip out best and worst realtime result
minimum: 0.342633000 sec real / 0.000062245 sec CPU
maximum: 0.351814000 sec real / 0.000073874 sec CPU
average: 0.346293321 sec real / 0.000070698 sec CPU
stdev  : 0.002620913 sec real / 0.000002831 sec CPU
global -E LD_BIND_NOW=1
optarg="LD_BIND_NOW=1"
Strip out best and worst realtime result
minimum: 0.285191000 sec real / 0.000062101 sec CPU
maximum: 0.293454000 sec real / 0.000073980 sec CPU
average: 0.287895000 sec real / 0.000071590 sec CPU
stdev  : 0.002337740 sec real / 0.000001967 sec CPU
global -E LD_X=1 -E LD_BIND_NOW=1
optarg="LD_X=1"
optarg="LD_BIND_NOW=1"
Strip out best and worst realtime result
minimum: 0.638814000 sec real / 0.000063557 sec CPU
maximum: 0.659667000 sec real / 0.000086187 sec CPU
average: 0.643091392 sec real / 0.000073052 sec CPU
stdev  : 0.003414747 sec real / 0.000002750 sec CPU

take3
local
Strip out best and worst realtime result
minimum: 0.106563000 sec real / 0.000056654 sec CPU
maximum: 0.156301000 sec real / 0.000069681 sec CPU
average: 0.107375964 sec real / 0.000063363 sec CPU
stdev  : 0.000376538 sec real / 0.000001826 sec CPU
local -E LD_X=1
optarg="LD_X=1"
Strip out best and worst realtime result
minimum: 0.262108000 sec real / 0.000065873 sec CPU
maximum: 0.268947000 sec real / 0.000079329 sec CPU
average: 0.265046500 sec real / 0.000074189 sec CPU
stdev  : 0.001349294 sec real / 0.000002202 sec CPU
local -E LD_BIND_NOW=1
optarg="LD_BIND_NOW=1"
Strip out best and worst realtime result
minimum: 0.178339000 sec real / 0.000058372 sec CPU
maximum: 0.180964000 sec real / 0.000070478 sec CPU
average: 0.179214142 sec real / 0.000063930 sec CPU
stdev  : 0.000602966 sec real / 0.000000961 sec CPU
local -E LD_X=1 -E LD_BIND_NOW=1
optarg="LD_X=1"
optarg="LD_BIND_NOW=1"
Strip out best and worst realtime result
minimum: 0.492687000 sec real / 0.000064509 sec CPU
maximum: 0.509753000 sec real / 0.000090265 sec CPU
average: 0.498109571 sec real / 0.000074401 sec CPU
stdev  : 0.002885770 sec real / 0.000001602 sec CPU
global
Strip out best and worst realtime result
minimum: 0.135356000 sec real / 0.000055916 sec CPU
maximum: 0.157524000 sec real / 0.000067681 sec CPU
average: 0.137677178 sec real / 0.000062051 sec CPU
stdev  : 0.001880825 sec real / 0.000003219 sec CPU
global -E LD_X=1
optarg="LD_X=1"
Strip out best and worst realtime result
minimum: 0.341822000 sec real / 0.000064653 sec CPU
maximum: 0.396209000 sec real / 0.000080133 sec CPU
average: 0.344525392 sec real / 0.000073766 sec CPU
stdev  : 0.001928640 sec real / 0.000003070 sec CPU
global -E LD_BIND_NOW=1
optarg="LD_BIND_NOW=1"
Strip out best and worst realtime result
minimum: 0.230014000 sec real / 0.000057105 sec CPU
maximum: 0.236641000 sec real / 0.000079505 sec CPU
average: 0.231364928 sec real / 0.000065419 sec CPU
stdev  : 0.001134105 sec real / 0.000003888 sec CPU
global -E LD_X=1 -E LD_BIND_NOW=1
optarg="LD_X=1"
optarg="LD_BIND_NOW=1"
Strip out best and worst realtime result
minimum: 0.636048000 sec real / 0.000064933 sec CPU
maximum: 0.673287000 sec real / 0.000077339 sec CPU
average: 0.645732678 sec real / 0.000073476 sec CPU
stdev  : 0.006697649 sec real / 0.000001922 sec CPU


	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]