| Home | Libraries | People | FAQ | More

## Performance

### Benchmarks of BOOST_METAPARSE_STRING

Measurements related to the performance of the `BOOST_METAPARSE_STRING` macro.

#### Increasing string length

128 strings with increasing length. Measured on a Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14.04-trusty host with 16 GB memory. Compiler used: gcc 4.8.5.

#### Increasing number of strings

Increasing number of strings with 64 length. Measured on a Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14.04-trusty host with 16 GB memory. Compiler used: gcc 4.8.5.

#### Increasing string length limit

100 one character long strings with increasing maximum length. Measured on a Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14.04-trusty host with 16 GB memory. Compiler used: gcc 4.8.5.

### Measuring printf

Parsers work at compile-time, thus their performance affects compilation speed. This section shows measurements of compilation time using Metaparse. The measurements were done on a Linux laptop with an 1.6 GHz Atom processor and 1 GB memory. The measurements were done using GCC 4.6.1 with `-std=c++0x` and no optimisation. Compilation speed was measured using the `time` utility.

To measure a non-trivial parser, the `printf` example program were used for measurements. Here is a list of the `printf` calls and their compilation speed (`user` output of `time`):

Table 24.1. Printf compilation speed

type-safe `printf` call | Compilation speed (s)
--- | ---
No compile-time parsing (just the includes and an empty `main`) | 3.51
`printf<BOOST_METAPARSE_STRING("%f")>(1.0)` | 4.95
`printf<BOOST_METAPARSE_STRING("%f%f")>(1.0, 2.0)` | 5.26
`printf<BOOST_METAPARSE_STRING("%f%f%f")>(1.0, 2.0, 3.0)` | 5.50
`printf<BOOST_METAPARSE_STRING("%f%f%f%f")>(1.0, 2.0, 3.0, 4.0)` | 5.82
`printf<BOOST_METAPARSE_STRING("%f%f%f%f%f")>(1.0, 2.0, 3.0, 4.0, 5.0)` | 6.07

### Further measurements

Further measurements can be found in the following paper:

Zoltán Porkoláb, Ábel Sinkovics:
Domain-specific Language Integration with Compile-time Parser Generator Library
In Eelco Visser, Jaakko Järvi, editors, Proceedings of the ninth international conference on Generative programming and component engineering (GPCE 2010). ACM, October 2010, pp. 137-146.