cat > n.c <<\EOF #include #include 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 __attribute__((noinline)) evict_cache (long *array, size_t count) { size_t i; int ret = 0; for (i = 0; i < count; i++) array[i] = i + 1; for (i = 0; i < count; i++) ret += array[i]; return ret; } int main (int argc, char **argv) { int i; void *h; /* Adjust for your L2 cache, mine is 1MB. */ long *array = malloc (256 * 1024 * sizeof (long)); int flags = RTLD_LAZY; if (argv[1][0] == 'g') flags |= RTLD_GLOBAL; for (i = 0; i < sizeof (libs) / sizeof (libs[0]); ++i) { evict_cache (array, 256 * 1024); h = dlopen (libs[i], flags); } return 0; } EOF gcc -g -O2 -o n n.c -Wl,-rpath,/usr/lib64/openoffice.org2.0/program/ \ -L/usr/lib64/openoffice.org2.0/program/ -lsoffice -lsw680lx -lsvx680lx -lstdc++ -lm -shared-libgcc /usr/sbin/prelink -vmR ./n for V in local global; do for M in '' '-E LD_BIND_NOW=1'; do ( echo "$V $M"; ./timing $M ./n $V ); done; done take1 local Strip out best and worst realtime result minimum: 0.252598000 sec real / 0.000068125 sec CPU maximum: 0.255268000 sec real / 0.000084226 sec CPU average: 0.253643142 sec real / 0.000075407 sec CPU stdev : 0.000641286 sec real / 0.000002025 sec CPU local -E LD_BIND_NOW=1 optarg="LD_BIND_NOW=1" Strip out best and worst realtime result minimum: 0.355105000 sec real / 0.000056627 sec CPU maximum: 0.391689000 sec real / 0.000080369 sec CPU average: 0.357542464 sec real / 0.000074811 sec CPU stdev : 0.003493931 sec real / 0.000002581 sec CPU global Strip out best and worst realtime result minimum: 0.289823000 sec real / 0.000065591 sec CPU maximum: 0.292342000 sec real / 0.000089039 sec CPU average: 0.291038785 sec real / 0.000074941 sec CPU stdev : 0.000540335 sec real / 0.000003253 sec CPU global -E LD_BIND_NOW=1 optarg="LD_BIND_NOW=1" Strip out best and worst realtime result minimum: 0.422357000 sec real / 0.000056080 sec CPU maximum: 0.430025000 sec real / 0.000092561 sec CPU average: 0.424305678 sec real / 0.000076960 sec CPU stdev : 0.000848422 sec real / 0.000003468 sec CPU take2 local Strip out best and worst realtime result minimum: 0.244879000 sec real / 0.000062648 sec CPU maximum: 0.249994000 sec real / 0.000088941 sec CPU average: 0.246728928 sec real / 0.000071952 sec CPU stdev : 0.000634173 sec real / 0.000003605 sec CPU local -E LD_BIND_NOW=1 optarg="LD_BIND_NOW=1" Strip out best and worst realtime result minimum: 0.341390000 sec real / 0.000051786 sec CPU maximum: 0.346805000 sec real / 0.000076650 sec CPU average: 0.343283357 sec real / 0.000072815 sec CPU stdev : 0.001045857 sec real / 0.000002876 sec CPU global Strip out best and worst realtime result minimum: 0.280108000 sec real / 0.000064175 sec CPU maximum: 0.288343000 sec real / 0.000086420 sec CPU average: 0.281190142 sec real / 0.000073883 sec CPU stdev : 0.000946847 sec real / 0.000002963 sec CPU global -E LD_BIND_NOW=1 optarg="LD_BIND_NOW=1" Strip out best and worst realtime result minimum: 0.404168000 sec real / 0.000047867 sec CPU maximum: 0.409607000 sec real / 0.000089063 sec CPU average: 0.406042035 sec real / 0.000073105 sec CPU stdev : 0.001200557 sec real / 0.000002313 sec CPU take3 local Strip out best and worst realtime result minimum: 0.219594000 sec real / 0.000063193 sec CPU maximum: 0.221967000 sec real / 0.000069838 sec CPU average: 0.220638857 sec real / 0.000065311 sec CPU stdev : 0.000659280 sec real / 0.000001556 sec CPU local -E LD_BIND_NOW=1 optarg="LD_BIND_NOW=1" Strip out best and worst realtime result minimum: 0.292865000 sec real / 0.000052557 sec CPU maximum: 0.297813000 sec real / 0.000088007 sec CPU average: 0.294272428 sec real / 0.000073999 sec CPU stdev : 0.000734011 sec real / 0.000003457 sec CPU global Strip out best and worst realtime result minimum: 0.248331000 sec real / 0.000065781 sec CPU maximum: 0.251560000 sec real / 0.000083441 sec CPU average: 0.249498928 sec real / 0.000074084 sec CPU stdev : 0.000521804 sec real / 0.000002443 sec CPU global -E LD_BIND_NOW=1 optarg="LD_BIND_NOW=1" Strip out best and worst realtime result minimum: 0.344976000 sec real / 0.000050839 sec CPU maximum: 0.350706000 sec real / 0.000086602 sec CPU average: 0.346507607 sec real / 0.000073651 sec CPU stdev : 0.001035954 sec real / 0.000003688 sec CPU take4 local Strip out best and worst realtime result minimum: 0.199643000 sec real / 0.000063611 sec CPU maximum: 0.207476000 sec real / 0.000072059 sec CPU average: 0.201715642 sec real / 0.000065163 sec CPU stdev : 0.002009911 sec real / 0.000001659 sec CPU local -E LD_BIND_NOW=1 optarg="LD_BIND_NOW=1" Strip out best and worst realtime result minimum: 0.253969000 sec real / 0.000056606 sec CPU maximum: 0.264754000 sec real / 0.000072700 sec CPU average: 0.256445071 sec real / 0.000063609 sec CPU stdev : 0.001690957 sec real / 0.000000905 sec CPU global Strip out best and worst realtime result minimum: 0.222315000 sec real / 0.000063257 sec CPU maximum: 0.231086000 sec real / 0.000078530 sec CPU average: 0.223764642 sec real / 0.000065032 sec CPU stdev : 0.000751210 sec real / 0.000000672 sec CPU global -E LD_BIND_NOW=1 optarg="LD_BIND_NOW=1" Strip out best and worst realtime result minimum: 0.295561000 sec real / 0.000056096 sec CPU maximum: 0.303293000 sec real / 0.000086572 sec CPU average: 0.297082285 sec real / 0.000074283 sec CPU stdev : 0.001047270 sec real / 0.000003516 sec CPU