summaryrefslogtreecommitdiff
path: root/src/port/Makefile
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2011-08-03 16:26:40 -0400
committerRobert Haas <rhaas@postgresql.org>2011-08-03 16:26:40 -0400
commit4af43ee3f165c8e4b332a7e680a44f4b7ba2d3c1 (patch)
treec75980425aaaae3144a458871139cdec9f5537ab /src/port/Makefile
parentac36e6f71f197540b8ee83c97f338ae5e5163f30 (diff)
downloadpostgresql-4af43ee3f165c8e4b332a7e680a44f4b7ba2d3c1.tar.gz
Make pgbench use erand48() rather than random().
glibc renders random() thread-safe by wrapping a futex lock around it; testing reveals that this limits the performance of pgbench on machines with many CPU cores. Rather than switching to random_r(), which is only available on GNU systems and crashes unless you use undocumented alchemy to initialize the random state properly, switch to our built-in implementation of erand48(), which is both thread-safe and concurrent. Since the list of reasons not to use the operating system's erand48() is getting rather long, rename ours to pg_erand48() (and similarly for our implementations of lrand48() and srand48()) and just always use those. We were already doing this on Cygwin anyway, and the glibc implementation is not quite thread-safe, so pgbench wouldn't be able to use that either. Per discussion with Tom Lane.
Diffstat (limited to 'src/port/Makefile')
-rw-r--r--src/port/Makefile4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/port/Makefile b/src/port/Makefile
index 60295dcdef..ffbe95effc 100644
--- a/src/port/Makefile
+++ b/src/port/Makefile
@@ -30,8 +30,8 @@ include $(top_builddir)/src/Makefile.global
override CPPFLAGS := -I$(top_builddir)/src/port -DFRONTEND $(CPPFLAGS)
LIBS += $(PTHREAD_LIBS)
-OBJS = $(LIBOBJS) chklocale.o dirmod.o exec.o inet_net_ntop.o noblock.o \
- path.o pgcheckdir.o pgmkdirp.o pgsleep.o pgstrcasecmp.o \
+OBJS = $(LIBOBJS) chklocale.o dirmod.o erand48.o exec.o inet_net_ntop.o \
+ noblock.o path.o pgcheckdir.o pgmkdirp.o pgsleep.o pgstrcasecmp.o \
qsort.o qsort_arg.o sprompt.o thread.o
# foo_srv.o and foo.o are both built from foo.c, but only foo.o has -DFRONTEND