[/
 / Copyright (c) 2008 Eric Niebler
 /
 / Distributed under the Boost Software License, Version 1.0. (See accompanying
 / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 /]

[section:perf Appendix 4: Performance Comparison]

The performance of xpressive is competitive with _regexpp_. I have run performance
benchmarks comparing static xpressive, dynamic xpressive and _regexpp_ on two platforms:
gcc (Cygwin) and Visual C++. The tests include short matches and long searches. For both
platforms, xpressive comes off well on short matches and roughly on par with _regexpp_ on
long searches.

<disclaimer>
As with all benchmarks,
the true test is how xpressive performs with ['your] patterns, ['your] input, and ['your]
platform, so if performance matters in your application, it's best to run your own tests.
</disclaimer>

[section:perf_gcc xpressive vs. Boost.Regex with GCC (Cygwin)]

Below are the results of a performance comparison between:

* static xpressive
* dynamic xpressive
* _regexpp_

[variablelist Test Specifications
[[Hardware:]             [hyper-threaded 3GHz Xeon with 1Gb RAM]]
[[Operating System:]     [Windows XP Pro + Cygwin]]
[[Compiler:]             [GNU C++ version 3.4.4 (Cygwin special)]]
[[C++ Standard Library:] [GNU libstdc++ version 3.4.4]]
[[_regexpp_ Version:]    [1.33+, BOOST_REGEX_USE_CPP_LOCALE, BOOST_REGEX_RECURSIVE]]
[[xpressive Version:]    [0.9.6a]]
]

[h2 Comparison 1: Short Matches]

The following tests evaluate the time taken to match the expression to the input string.
For each result, the top number has been normalized relative to the fastest time, so 1.0
is as good as it gets. The bottom number (in parentheses) is the actual time in seconds.
The best time has been marked in green.

[xinclude ../perf/gcc/short_matches.xml]

[h2 Comparison 2: Long Searches]

The next test measures the time to find ['all] matches in a long English text. The text is the
[@http://www.gutenberg.org/dirs/3/2/0/3200/3200.zip complete works of Mark Twain],
from [@http://promo.net/pg/ Project Gutenberg]. The text is 19Mb long. As above, the top number
is the normalized time and the bottom number is the actual time. The best time is in green.

[xinclude ../perf/gcc/long_twain_search.xml]

[endsect]
[section:perf_msvc xpressive vs. Boost.Regex with Visual C++]

Below are the results of a performance comparison between:

* static xpressive
* dynamic xpressive
* _regexpp_

[variablelist Test Specifications
[[Hardware:]             [hyper-threaded 3GHz Xeon with 1Gb RAM]]
[[Operating System:]     [Windows XP Pro]]
[[Compiler:]             [Visual C++ .NET 2003 (7.1)]]
[[C++ Standard Library:] [Dinkumware, version 313]]
[[_regexpp_ Version:]    [1.33+, BOOST_REGEX_USE_CPP_LOCALE, BOOST_REGEX_RECURSIVE]]
[[xpressive Version:]    [0.9.6a]]
]

[h2 Comparison 1: Short Matches]

The following tests evaluate the time taken to match the expression to the input string.
For each result, the top number has been normalized relative to the fastest time, so 1.0
is as good as it gets. The bottom number (in parentheses) is the actual time in seconds.
The best time has been marked in green.

[xinclude ../perf/msvc/short_matches.xml]

[h2 Comparison 2: Long Searches]

The next test measures the time to find ['all] matches in a long English text. The text is the
[@http://www.gutenberg.org/dirs/3/2/0/3200/3200.zip complete works of Mark Twain],
from [@http://promo.net/pg/ Project Gutenberg]. The text is 19Mb long. As above, the top number
is the normalized time and the bottom number is the actual time. The best time is in green.

[xinclude ../perf/msvc/long_twain_search.xml]

[endsect]
[endsect]
