Linking Affects the Speed of MySQL

Most of the following tests are done on Linux with the MySQL benchmarks, but they should
give some indication for other operating systems and workloads.
You get the fastest executable when you link with -static.
On Linux, you will get the fastest code when compiling with pgcc and -O6. To compile
`sql_yacc.cc' with these options, you need about 200M memory because gcc/pgcc needs
a lot of memory to make all functions inline. You should also set CXX=gcc when con guring
MySQL to avoid inclusion of the libstdc++ library (it is not needed). Note that with some
versions of pgcc, the resulting code will only run on true Pentium processors, even if you
use the compiler option that you want the resulting code to be working on all x586 type
processors (like AMD).

By just using a better compiler and/or better compiler options you can get a 10-30 % speed
increase in your application. This is particularly important if you compile the SQL server
yourself !
We have tested both the Cygnus CodeFusion and Fujitsu compilers, but when we tested
them, neither was su ciently bug free to allow MySQL to be compiled with optimizations
on.
When you compile MySQL you should only include support for the character sets that you
are going to use. (Option --with-charset=xxx).


1If you use pgcc and compile everything with -O6, the mysqld server is 1% faster than
with gcc 2.95.2.
2 If you link dynamically (without -static), the result is 13% slower on Linux. Note
that you still can use a dynamic linked MySQL library. It is only the server that is
critical for performance.
3 If you connect using TCP/IP rather than Unix sockets, the result is 7.5% slower on
the same computer. (If you are connection to localhost, MySQL will, by default, use
sockets).
4 If you compile with --with-debug=full, then you will loose 20 % for most queries,
but some queries may take substantially longer (The MySQL benchmarks ran 35 %
slower) If you use --with-debug, then you will only loose 15 %.
5 On a Sun SPARCstation 20, SunPro C++ 4.2 is 5 % faster than gcc 2.95.2.
6 Compiling with gcc 2.95.2 for ultrasparc with the option -mcpu=v8 -Wa,-xarch=v8plusa
gives 4 % more performance.
7 On Solaris 2.5.1, MIT-pthreads is 8-12% slower than Solaris native threads on a single
processor. With more load/CPUs the di erence should get bigger.
8 Running with --log-bin makes [MySQL 1 % slower.
9 Compiling without frame pointers -fomit-frame-pointer with gcc makes MySQL 1
% faster.
The MySQL-Linux distribution provided by MySQL AB used to be compiled with pgcc,
but we had to go back to regular gcc because of a bug in pgcc that would generate the
code that does not run on AMD.