A basic performance test is run on every compiler tested. It doesn't try to be very accurate — it just stress-tests the compiler once to get a rough idea of how long it takes to compile Better Enums.
The files compared in the test are as follows:
- One file includes
enum.hand declares 647 constants across 36 Better Enums.
- The other file only
iostreamand does nothing with it.
The argument is that if compiling a bunch of Better Enums is faster, or about as
fast as, including a single standard header such as
iostream, then Better
Enums is fast enough for general use.
Results are given for select compilers and
as ratios of how long it took to compile the Better Enums file to how long it
took to compile the
iostream file. The less the ratio, the better. Ratios less
than 1 mean the enums compiled faster, and ratios greater than 1 mean
- clang 3.6, fast
- clang 3.6, full
- gcc 5.1, fast
- gcc 5.1, full
- VC2015RC, C++98: 1.18
The time to merely include
enum.h vary widely by compiler, with clang being
by far the fastest. The ratios to
iostream are given below.
- clang 3.6: 0.15
- gcc 5.1: 0.77
- VC2015RC: 0.82
On my test machines, clang processed the file in 40ms, gcc took 230ms, and VC2015 took 820ms. The first two are comparable to each other, but VC2015 runs on a different machine.
In general, I am very sensitive to performance. Better Enums was originally developed in the context of a commercial project where slow running times and slow compilation times were unacceptable. I am continuing to develop it in this spirit.