regex_comparison.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 140 行

HPP
140
字号
/* * * Copyright (c) 2002 * John Maddock * * Use, modification and distribution are subject to 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) * */#ifndef REGEX_COMPARISON_HPP#define REGEX_COMPARISON_HPP#include <string>#include <list>#include <boost/limits.hpp>//// globals://extern bool time_boost;extern bool time_greta;extern bool time_safe_greta;extern bool time_dynamic_xpressive;extern bool time_static_xpressive;//extern bool time_posix;//extern bool time_pcre;extern bool test_matches;extern bool test_short_twain;extern bool test_long_twain;extern std::string xml_out_file;extern std::string xml_contents;int handle_argument(const std::string& what);int show_usage();void load_file(std::string& text, const char* file);void output_xml_results(bool show_description, const std::string& title, const std::string& filename);struct results{   double boost_time;   double greta_time;   double safe_greta_time;   double dynamic_xpressive_time;   double static_xpressive_time;   //double posix_time;   //double pcre_time;   double factor;   std::string expression;   std::string description;   results(const std::string& ex, const std::string& desc)      : boost_time(-1),         greta_time(-1),        safe_greta_time(-1),        dynamic_xpressive_time(-1),        static_xpressive_time(-1),        //posix_time(-1),        //pcre_time(-1),        factor((std::numeric_limits<double>::max)()),        expression(ex),         description(desc)   {}   void finalise()   {      if((boost_time >= 0) && (boost_time < factor))         factor = boost_time;      if((greta_time >= 0) && (greta_time < factor))         factor = greta_time;      if((safe_greta_time >= 0) && (safe_greta_time < factor))          factor = safe_greta_time;      if((dynamic_xpressive_time >= 0) && (dynamic_xpressive_time < factor))          factor = dynamic_xpressive_time;      if((static_xpressive_time >= 0) && (static_xpressive_time < factor))          factor = static_xpressive_time;      //if((posix_time >= 0) && (posix_time < factor))      //   factor = posix_time;      //if((pcre_time >= 0) && (pcre_time < factor))      //   factor = pcre_time;      if((factor >= 0) && (factor < factor))         factor = factor;   }};extern std::list<results> result_list;namespace b {// boost tests:double time_match(const std::string& re, const std::string& text);double time_find_all(const std::string& re, const std::string& text);}//namespace posix {//// posix tests://double time_match(const std::string& re, const std::string& text);//double time_find_all(const std::string& re, const std::string& text);////}//namespace pcr {//// pcre tests://double time_match(const std::string& re, const std::string& text);//double time_find_all(const std::string& re, const std::string& text);////}namespace g {// greta tests:double time_match(const std::string& re, const std::string& text);double time_find_all(const std::string& re, const std::string& text);}namespace gs {// safe greta tests:double time_match(const std::string& re, const std::string& text);double time_find_all(const std::string& re, const std::string& text);}namespace dxpr {// dynamic xpressive tests:double time_match(const std::string& re, const std::string& text);double time_find_all(const std::string& re, const std::string& text);}namespace sxpr {// static xpressive tests:double time_match(const std::string& re, const std::string& text);double time_find_all(const std::string& re, const std::string& text);}void test_match(const std::string& re, const std::string& text, const std::string& description);void test_find_all(const std::string& re, const std::string& text, const std::string& description);inline void test_match(const std::string& re, const std::string& text){ test_match(re, text, text); }inline void test_find_all(const std::string& re, const std::string& text){ test_find_all(re, text, ""); }#define REPEAT_COUNT 10#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?