Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_33_1/libs/regex/performance/regex_comparison.hpp @ 13

Last change on this file since 13 was 12, checked in by landauf, 17 years ago

added boost

File size: 4.2 KB
Line 
1/*
2 *
3 * Copyright (c) 2002
4 * John Maddock
5 *
6 * Use, modification and distribution are subject to the
7 * Boost Software License, Version 1.0. (See accompanying file
8 * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 *
10 */
11
12
13#ifndef REGEX_COMPARISON_HPP
14#define REGEX_COMPARISON_HPP
15
16#include <string>
17#include <list>
18#include <boost/limits.hpp>
19
20//
21// globals:
22//
23extern bool time_boost;
24extern bool time_localised_boost;
25extern bool time_greta;
26extern bool time_safe_greta;
27extern bool time_posix;
28extern bool time_pcre;
29extern bool time_xpressive;
30
31extern bool test_matches;
32extern bool test_short_twain;
33extern bool test_long_twain;
34extern bool test_code;
35extern bool test_html;
36
37extern std::string html_template_file;
38extern std::string html_out_file;
39extern std::string html_contents;
40
41
42int handle_argument(const std::string& what);
43int show_usage();
44void load_file(std::string& text, const char* file);
45void output_html_results(bool show_description, const std::string& tagname);
46void output_final_html();
47
48
49struct results
50{
51   double boost_time;
52   double localised_boost_time;
53   double greta_time;
54   double safe_greta_time;
55   double posix_time;
56   double pcre_time;
57   double xpressive_time;
58   double factor;
59   std::string expression;
60   std::string description;
61   results(const std::string& ex, const std::string& desc)
62      : boost_time(-1),
63        localised_boost_time(-1),
64        greta_time(-1),
65        safe_greta_time(-1),
66        posix_time(-1),
67        pcre_time(-1),
68        xpressive_time(-1),
69        factor((std::numeric_limits<double>::max)()),
70        expression(ex), 
71        description(desc)
72   {}
73   void finalise()
74   {
75      if((boost_time >= 0) && (boost_time < factor))
76         factor = boost_time;
77      if((localised_boost_time >= 0) && (localised_boost_time < factor))
78         factor = localised_boost_time;
79      if((greta_time >= 0) && (greta_time < factor))
80         factor = greta_time;
81      if((safe_greta_time >= 0) && (safe_greta_time < factor))
82         factor = safe_greta_time;
83      if((posix_time >= 0) && (posix_time < factor))
84         factor = posix_time;
85      if((pcre_time >= 0) && (pcre_time < factor))
86         factor = pcre_time;
87      if((xpressive_time >= 0) && (xpressive_time < factor))
88         factor = xpressive_time;
89   }
90};
91
92extern std::list<results> result_list;
93
94
95namespace b {
96// boost tests:
97double time_match(const std::string& re, const std::string& text, bool icase);
98double time_find_all(const std::string& re, const std::string& text, bool icase);
99
100}
101namespace bl {
102// localised boost tests:
103double time_match(const std::string& re, const std::string& text, bool icase);
104double time_find_all(const std::string& re, const std::string& text, bool icase);
105
106}
107namespace pcr {
108// pcre tests:
109double time_match(const std::string& re, const std::string& text, bool icase);
110double time_find_all(const std::string& re, const std::string& text, bool icase);
111
112}
113namespace g {
114// greta tests:
115double time_match(const std::string& re, const std::string& text, bool icase);
116double time_find_all(const std::string& re, const std::string& text, bool icase);
117
118}
119namespace gs {
120// safe greta tests:
121double time_match(const std::string& re, const std::string& text, bool icase);
122double time_find_all(const std::string& re, const std::string& text, bool icase);
123
124}
125namespace posix {
126// safe greta tests:
127double time_match(const std::string& re, const std::string& text, bool icase);
128double time_find_all(const std::string& re, const std::string& text, bool icase);
129
130}
131namespace dxpr {
132// xpressive tests:
133double time_match(const std::string& re, const std::string& text, bool icase);
134double time_find_all(const std::string& re, const std::string& text, bool icase);
135}
136
137void test_match(const std::string& re, const std::string& text, const std::string& description, bool icase = false);
138void test_find_all(const std::string& re, const std::string& text, const std::string& description, bool icase = false);
139inline void test_match(const std::string& re, const std::string& text, bool icase = false)
140{ test_match(re, text, text, icase); }
141inline void test_find_all(const std::string& re, const std::string& text, bool icase = false)
142{ test_find_all(re, text, "", icase); }
143
144
145#define REPEAT_COUNT 10
146
147#endif
148
Note: See TracBrowser for help on using the repository browser.