diff --git a/performance/Jamfile.v2 b/performance/Jamfile.v2 index 38c679c9..48154c91 100644 --- a/performance/Jamfile.v2 +++ b/performance/Jamfile.v2 @@ -19,12 +19,11 @@ path-constant images_location : html ; path-constant here : . ; lib pcre2 ; -lib regex ; lib re2 ; exe has_pcre2 : config/pcre.cpp pcre2 : third_party third_party third_party release ; explicit has_pcre2 ; -exe has_posix : config/posix.cpp : release regex ; +exe has_posix : config/posix.cpp : release ; explicit has_posix ; exe has_re2 : config/re2.cpp : release re2 third_party third_party third_party ; explicit has_re2 ; @@ -33,7 +32,7 @@ run [ glob *.cpp ] /boost/regex//boost_regex /boost/system /boost/chrono /boost/ : : : release [ check-target-builds has_pcre2 : TEST_PCRE2 pcre2 ] - [ check-target-builds has_posix : TEST_POSIX regex ] + [ check-target-builds has_posix : TEST_POSIX ] [ check-target-builds has_re2 : TEST_RE2 re2 third_party third_party third_party ] third_party third_party diff --git a/performance/doc/performance_tables.qbk b/performance/doc/performance_tables.qbk index f6454229..bbf9b9a5 100644 --- a/performance/doc/performance_tables.qbk +++ b/performance/doc/performance_tables.qbk @@ -1,6 +1,74 @@ [/tables:] +[template table_Testing_Perl_searches_platform_linux_compiler_GNU_C_version_5_1_0_[] +[table:table_Testing_Perl_searches_platform_linux_compiler_GNU_C_version_5_1_0_ Testing Perl searches (platform = linux, compiler = GNU C++ version 5.1.0) +[[Expression[br]Text][std::regex][boost 1.59][boost::xpressive::cregex][PCRE-10.10]] +[[[^(?i)\u005D+href\=("\u005B\^"\u005D\*"|\u005B\^\u005B:space:\u005D\u005D+)\u005B\^>\u005D\*>][br]In file: ../../../libs/libraries.htm][[role grey -]][[role blue 1.44[br](340578ns)]][[role blue 1.49[br](354327ns)]][[role green 1.00[br](237126ns)]]] +[[[^(?i)\u005D+face\=("\u005B\^"\u005D\*"|\u005B\^\u005B:space:\u005D\u005D+)\u005B\^>\u005D\*>.\*?<\/font>][br]In file: ../../../libs/libraries.htm][[role grey -]][[role blue 2.19[br](160902ns)]][[role blue 1.21[br](89265ns)]][[role green 1.00[br](73565ns)]]] +[[[^(?i)\u005D\*>.\*?<\/h\u005B12345678\u005D>][br]In file: ../../../libs/libraries.htm][[role grey -]][[role blue 1.90[br](161009ns)]][[role blue 2.30[br](194911ns)]][[role green 1.00[br](84846ns)]]] +[[[^(?i)\u005D+src\=("\u005B\^"\u005D\*"|\u005B\^\u005B:space:\u005D\u005D+)\u005B\^>\u005D\*>][br]In file: ../../../libs/libraries.htm][[role grey -]][[role blue 2.27[br](164055ns)]][[role blue 1.38[br](100267ns)]][[role green 1.00[br](72402ns)]]] +[[[^(?i)

.\*?<\/p>][br]In file: ../../../libs/libraries.htm][[role grey -]][[role blue 2.14[br](160542ns)]][[role blue 1.72[br](129220ns)]][[role green 1.00[br](75127ns)]]] +[[[^(\\w+)\\s\*(\\(\u005B\^()\u005D++(?:(?2)\u005B\^()\u005D++)\*+\u005B\^)\u005D\*\\))\\s\*(\\{\u005B\^{}\u005D++((?3)\u005B\^{}\u005D++)\*+\u005B\^}\u005D\*+\\})][br]In file: boost/multiprecision/number.hpp][[role grey -]][[role green 1.00[br](1136822ns)]][[role grey -]][[role blue 2.55[br](2896286ns)]]] +[[[^(\^\u005B \\t\u005D\*\#(?:(?>\u005B\^\\\\\\n\u005D+)|\\\\(?>\\s\*\\n|.))\*)|][br]In file: boost/multiprecision/number.hpp][[role grey -]][[role blue 1.88[br](11915857ns)]][[role green 1.14[br](7206389ns)]][[role green 1.00[br](6347410ns)]]] +[[[^(template\u005B\u005B:space:\u005D\u005D\*<\u005B\^;:{\u005D+>\u005B\u005B:space:\u005D\u005D\*)?(class|struct)\u005B\u005B:space:\u005D\u005D\*(\\w+(\u005B \u005D\*\\(\u005B\^)\u005D\*\\))?\u005B\u0 ...][br]In file: boost/multiprecision/number.hpp][[role blue 3.55[br](20770292ns)]][[role blue 1.78[br](10395642ns)]][[role green 1.00[br](5856680ns)]][[role blue 1.84[br](10752084ns)]]] +[[[^Beman|John|Dave][br]In file: ../../../libs/libraries.htm][[role red 33.79[br](2157684ns)]][[role green 1.00[br](63861ns)]][[role green 1.13[br](72354ns)]][[role green 1.15[br](73190ns)]]] +[[[^\\w+\\s\*(\\(\u005B\^()\u005D++(?:(?1)\u005B\^()\u005D++)\*+\u005B\^)\u005D\*\\))][br]In file: boost/multiprecision/number.hpp][[role grey -]][[role green 1.00[br](1167674ns)]][[role grey -]][[role blue 1.47[br](1710795ns)]]] +[[[^\\{\u005B\^{}\u005D++((?0)\u005B\^{}\u005D++)\*+\u005B\^}\u005D\*+\\}][br]In file: boost/multiprecision/number.hpp][[role grey -]][[role blue 1.32[br](150540ns)]][[role grey -]][[role green 1.00[br](114132ns)]]] +[[[^\^\u005B \u005D\*\#\u005B \u005D\*include\u005B \u005D+("\u005B\^"\u005D+"|<\u005B\^>\u005D+>)][br]In file: boost/multiprecision/number.hpp][[role red 10.62[br](1269946ns)]][[role blue 1.43[br](171067ns)]][[role green 1.00[br](119573ns)]][[role blue 1.35[br](161102ns)]]] +[[[^\^\u005B \u005D\*\#\u005B \u005D\*include\u005B \u005D+("boost\/\u005B\^"\u005D+"|\u005D+>)][br]In file: boost/multiprecision/number.hpp][[role red 10.59[br](1271338ns)]][[role blue 1.44[br](173240ns)]][[role green 1.00[br](120003ns)]][[role blue 1.34[br](160962ns)]]] +] +] + +[template table_Testing_leftmost_longest_searches_platform_linux_compiler_GNU_C_version_5_1_0_[] +[table:table_Testing_leftmost_longest_searches_platform_linux_compiler_GNU_C_version_5_1_0_ Testing leftmost-longest searches (platform = linux, compiler = GNU C++ version 5.1.0) +[[Expression[br]Text][std::regex][boost 1.59][POSIX]] +[[[^\u005D+href\=("\u005B\^"\u005D\*"|\u005B\^\u005B:space:\u005D\u005D+)\u005B\^>\u005D\*>][br]In file: ../../../libs/libraries.htm][[role blue 1.47[br](2329256ns)]][[role green 1.00[br](1583069ns)]][[role blue 2.43[br](3849462ns)]]] +[[[^\u005D+src\=("\u005B\^"\u005D\*"|\u005B\^\u005B:space:\u005D\u005D+)\u005B\^>\u005D\*>][br]In file: ../../../libs/libraries.htm][[role red 10.94[br](1129103ns)]][[role green 1.00[br](103241ns)]][[role green 1.01[br](104450ns)]]] +[[[^Beman|John|Dave][br]In file: ../../../libs/libraries.htm][[role red 30.21[br](2093732ns)]][[role green 1.00[br](69316ns)]][[role blue 1.32[br](91168ns)]]] +] +] + +[template table_Testing_simple_Perl_matches_platform_linux_compiler_GNU_C_version_5_1_0_[] +[table:table_Testing_simple_Perl_matches_platform_linux_compiler_GNU_C_version_5_1_0_ Testing simple Perl matches (platform = linux, compiler = GNU C++ version 5.1.0) +[[Expression[br]Text][std::regex][boost 1.59][boost::xpressive::cregex][PCRE-10.10]] +[[[^(\u005B\u005B:digit:\u005D\u005D{4}\u005B- \u005D){3}\u005B\u005B:digit:\u005D\u005D{3,4}][br][^1234-5678-1234-456]][[role blue 2.72[br](384ns)]][[role blue 2.85[br](402ns)]][[role green 1.00[br](141ns)]][[role blue 1.33[br](187ns)]]] +[[[^\^(\u005B0-9\u005D+)(\\-| |\$)(.\*)\$][br][^100- this is a line of ftp response which contains a message string]][[role red 19.85[br](2124ns)]][[role blue 2.68[br](287ns)]][[role green 1.00[br](107ns)]][[role blue 2.94[br](315ns)]]] +[[[^\^(\u005Ba-zA-Z0-9\_\\-\\.\u005D+)\@((\\\u005B\u005B0-9\u005D{1,3}\\.\u005B0-9\u005D{1,3}\\.\u005B0-9\u005D{1,3}\\.)|((\u005Ba-zA-Z0-9\\-\u005D+\\.)+))(\u005Ba-zA-Z\u005D{2,4}|\u005B0-9\u005D{1,3})(\\ ...][br][^bob.smith\@foo.tv]][[role grey -]][[role blue 2.16[br](542ns)]][[role green 1.00[br](251ns)]][[role blue 1.25[br](315ns)]]] +[[[^\^(\u005Ba-zA-Z0-9\_\\-\\.\u005D+)\@((\\\u005B\u005B0-9\u005D{1,3}\\.\u005B0-9\u005D{1,3}\\.\u005B0-9\u005D{1,3}\\.)|((\u005Ba-zA-Z0-9\\-\u005D+\\.)+))(\u005Ba-zA-Z\u005D{2,4}|\u005B0-9\u005D{1,3})(\\ ...][br][^foo12\@foo.edu]][[role grey -]][[role blue 2.22[br](554ns)]][[role green 1.00[br](250ns)]][[role blue 1.28[br](319ns)]]] +[[[^\^(\u005Ba-zA-Z0-9\_\\-\\.\u005D+)\@((\\\u005B\u005B0-9\u005D{1,3}\\.\u005B0-9\u005D{1,3}\\.\u005B0-9\u005D{1,3}\\.)|((\u005Ba-zA-Z0-9\\-\u005D+\\.)+))(\u005Ba-zA-Z\u005D{2,4}|\u005B0-9\u005D{1,3})(\\ ...][br][^john\@johnmaddock.co.uk]][[role grey -]][[role blue 2.10[br](657ns)]][[role green 1.00[br](313ns)]][[role green 1.16[br](364ns)]]] +[[[^\^\u005B-+\u005D?\u005B\u005B:digit:\u005D\u005D\*\\.?\u005B\u005B:digit:\u005D\u005D\*\$][br][^+3.14159]][[role red 4.08[br](339ns)]][[role blue 2.51[br](208ns)]][[role green 1.00[br](83ns)]][[role blue 1.42[br](118ns)]]] +[[[^\^\u005B-+\u005D?\u005B\u005B:digit:\u005D\u005D\*\\.?\u005B\u005B:digit:\u005D\u005D\*\$][br][^-3.14159]][[role red 4.14[br](335ns)]][[role blue 2.49[br](202ns)]][[role green 1.00[br](81ns)]][[role blue 1.46[br](118ns)]]] +[[[^\^\u005B-+\u005D?\u005B\u005B:digit:\u005D\u005D\*\\.?\u005B\u005B:digit:\u005D\u005D\*\$][br][^123]][[role blue 3.17[br](254ns)]][[role blue 2.25[br](180ns)]][[role green 1.00[br](80ns)]][[role blue 1.32[br](106ns)]]] +[[[^\^\u005B\u005B:digit:\u005D\u005D{1,2}\/\u005B\u005B:digit:\u005D\u005D{1,2}\/\u005B\u005B:digit:\u005D\u005D{4}\$][br][^12\/12\/2001]][[role blue 3.02[br](248ns)]][[role blue 2.52[br](207ns)]][[role green 1.00[br](82ns)]][[role green 1.18[br](97ns)]]] +[[[^\^\u005B\u005B:digit:\u005D\u005D{1,2}\/\u005B\u005B:digit:\u005D\u005D{1,2}\/\u005B\u005B:digit:\u005D\u005D{4}\$][br][^4\/1\/2001]][[role blue 2.70[br](216ns)]][[role blue 2.25[br](180ns)]][[role green 1.00[br](80ns)]][[role green 1.18[br](94ns)]]] +[[[^\^\u005Ba-zA-Z\u005D{1,2}\u005B0-9\u005D\u005B0-9A-Za-z\u005D{0,1} {0,1}\u005B0-9\u005D\u005BA-Za-z\u005D{2}\$][br][^EH10 2QQ]][[role blue 2.54[br](229ns)]][[role blue 2.39[br](215ns)]][[role green 1.00[br](90ns)]][[role green 1.16[br](104ns)]]] +[[[^\^\u005Ba-zA-Z\u005D{1,2}\u005B0-9\u005D\u005B0-9A-Za-z\u005D{0,1} {0,1}\u005B0-9\u005D\u005BA-Za-z\u005D{2}\$][br][^G1 1AA]][[role blue 2.46[br](219ns)]][[role blue 2.39[br](213ns)]][[role green 1.00[br](89ns)]][[role green 1.18[br](105ns)]]] +[[[^\^\u005Ba-zA-Z\u005D{1,2}\u005B0-9\u005D\u005B0-9A-Za-z\u005D{0,1} {0,1}\u005B0-9\u005D\u005BA-Za-z\u005D{2}\$][br][^SW1 1ZZ]][[role blue 2.51[br](228ns)]][[role blue 2.31[br](210ns)]][[role green 1.00[br](91ns)]][[role green 1.12[br](102ns)]]] +[[[^abc][br][^abc]][[role blue 1.92[br](113ns)]][[role blue 2.12[br](125ns)]][[role green 1.07[br](63ns)]][[role green 1.00[br](59ns)]]] +] +] + +[template table_Testing_simple_leftmost_longest_matches_platform_linux_compiler_GNU_C_version_5_1_0_[] +[table:table_Testing_simple_leftmost_longest_matches_platform_linux_compiler_GNU_C_version_5_1_0_ Testing simple leftmost-longest matches (platform = linux, compiler = GNU C++ version 5.1.0) +[[Expression[br]Text][std::regex][boost 1.59][POSIX]] +[[[^(\u005B\u005B:digit:\u005D\u005D{4}\u005B- \u005D){3}\u005B\u005B:digit:\u005D\u005D{3,4}][br][^1234-5678-1234-456]][[role green 1.00[br](431ns)]][[role blue 1.25[br](537ns)]][[role blue 3.45[br](1486ns)]]] +[[[^\^(\u005B0-9\u005D+)(\\-| |\$)(.\*)\$][br][^100- this is a line of ftp response which contains a message string]][[role red 4.60[br](2203ns)]][[role green 1.00[br](479ns)]][[role red 12.80[br](6133ns)]]] +[[[^\^(\u005Ba-zA-Z0-9\_\\-\\.\u005D+)\@((\\\u005B\u005B0-9\u005D{1,3}\\.\u005B0-9\u005D{1,3}\\.\u005B0-9\u005D{1,3}\\.)|((\u005Ba-zA-Z0-9\\-\u005D+\\.)+))(\u005Ba-zA-Z\u005D{2,4}|\u005B0-9\u005D{1,3})(\\ ...][br][^bob.smith\@foo.tv]][[role blue 1.28[br](869ns)]][[role green 1.00[br](681ns)]][[role blue 2.61[br](1775ns)]]] +[[[^\^(\u005Ba-zA-Z0-9\_\\-\\.\u005D+)\@((\\\u005B\u005B0-9\u005D{1,3}\\.\u005B0-9\u005D{1,3}\\.\u005B0-9\u005D{1,3}\\.)|((\u005Ba-zA-Z0-9\\-\u005D+\\.)+))(\u005Ba-zA-Z\u005D{2,4}|\u005B0-9\u005D{1,3})(\\ ...][br][^foo12\@foo.edu]][[role green 1.11[br](752ns)]][[role green 1.00[br](675ns)]][[role blue 2.44[br](1644ns)]]] +[[[^\^(\u005Ba-zA-Z0-9\_\\-\\.\u005D+)\@((\\\u005B\u005B0-9\u005D{1,3}\\.\u005B0-9\u005D{1,3}\\.\u005B0-9\u005D{1,3}\\.)|((\u005Ba-zA-Z0-9\\-\u005D+\\.)+))(\u005Ba-zA-Z\u005D{2,4}|\u005B0-9\u005D{1,3})(\\ ...][br][^john\@johnmaddock.co.uk]][[role blue 1.24[br](1116ns)]][[role green 1.00[br](899ns)]][[role blue 2.61[br](2342ns)]]] +[[[^\^\u005B-+\u005D?\u005B\u005B:digit:\u005D\u005D\*\\.?\u005B\u005B:digit:\u005D\u005D\*\$][br][^+3.14159]][[role blue 1.61[br](339ns)]][[role blue 1.76[br](370ns)]][[role green 1.00[br](210ns)]]] +[[[^\^\u005B-+\u005D?\u005B\u005B:digit:\u005D\u005D\*\\.?\u005B\u005B:digit:\u005D\u005D\*\$][br][^-3.14159]][[role blue 1.66[br](342ns)]][[role blue 1.79[br](368ns)]][[role green 1.00[br](206ns)]]] +[[[^\^\u005B-+\u005D?\u005B\u005B:digit:\u005D\u005D\*\\.?\u005B\u005B:digit:\u005D\u005D\*\$][br][^123]][[role blue 1.69[br](248ns)]][[role blue 3.70[br](544ns)]][[role green 1.00[br](147ns)]]] +[[[^\^\u005B\u005B:digit:\u005D\u005D{1,2}\/\u005B\u005B:digit:\u005D\u005D{1,2}\/\u005B\u005B:digit:\u005D\u005D{4}\$][br][^12\/12\/2001]][[role blue 2.23[br](256ns)]][[role blue 2.63[br](303ns)]][[role green 1.00[br](115ns)]]] +[[[^\^\u005B\u005B:digit:\u005D\u005D{1,2}\/\u005B\u005B:digit:\u005D\u005D{1,2}\/\u005B\u005B:digit:\u005D\u005D{4}\$][br][^4\/1\/2001]][[role blue 1.97[br](213ns)]][[role blue 2.70[br](292ns)]][[role green 1.00[br](108ns)]]] +[[[^\^\u005Ba-zA-Z\u005D{1,2}\u005B0-9\u005D\u005B0-9A-Za-z\u005D{0,1} {0,1}\u005B0-9\u005D\u005BA-Za-z\u005D{2}\$][br][^EH10 2QQ]][[role blue 2.38[br](255ns)]][[role blue 3.31[br](354ns)]][[role green 1.00[br](107ns)]]] +[[[^\^\u005Ba-zA-Z\u005D{1,2}\u005B0-9\u005D\u005B0-9A-Za-z\u005D{0,1} {0,1}\u005B0-9\u005D\u005BA-Za-z\u005D{2}\$][br][^G1 1AA]][[role blue 2.12[br](216ns)]][[role blue 2.90[br](296ns)]][[role green 1.00[br](102ns)]]] +[[[^\^\u005Ba-zA-Z\u005D{1,2}\u005B0-9\u005D\u005B0-9A-Za-z\u005D{0,1} {0,1}\u005B0-9\u005D\u005BA-Za-z\u005D{2}\$][br][^SW1 1ZZ]][[role blue 2.25[br](234ns)]][[role blue 2.89[br](301ns)]][[role green 1.00[br](104ns)]]] +[[[^abc][br][^abc]][[role blue 1.20[br](113ns)]][[role blue 2.38[br](224ns)]][[role green 1.00[br](94ns)]]] +] +] + [template table_Testing_Perl_searches_platform_Windows_x64_compiler_Microsoft_Visual_C_version_14_0_[] [table:table_Testing_Perl_searches_platform_Windows_x64_compiler_Microsoft_Visual_C_version_14_0_ Testing Perl searches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.0) [[Expression[br]Text][boost 1.60][PCRE-10.10][RE2][std::regex][boost::xpressive::cregex]] @@ -72,6 +140,30 @@ [/sections:] +[template section_Testing_Perl_searches_platform_linux_compiler_GNU_C_version_5_1_0_[] +[section:section_Testing_Perl_searches_platform_linux_compiler_GNU_C_version_5_1_0_ Testing Perl searches (platform = linux, compiler = GNU C++ version 5.1.0)] +[table_Testing_Perl_searches_platform_linux_compiler_GNU_C_version_5_1_0_] +[endsect] +] + +[template section_Testing_leftmost_longest_searches_platform_linux_compiler_GNU_C_version_5_1_0_[] +[section:section_Testing_leftmost_longest_searches_platform_linux_compiler_GNU_C_version_5_1_0_ Testing leftmost-longest searches (platform = linux, compiler = GNU C++ version 5.1.0)] +[table_Testing_leftmost_longest_searches_platform_linux_compiler_GNU_C_version_5_1_0_] +[endsect] +] + +[template section_Testing_simple_Perl_matches_platform_linux_compiler_GNU_C_version_5_1_0_[] +[section:section_Testing_simple_Perl_matches_platform_linux_compiler_GNU_C_version_5_1_0_ Testing simple Perl matches (platform = linux, compiler = GNU C++ version 5.1.0)] +[table_Testing_simple_Perl_matches_platform_linux_compiler_GNU_C_version_5_1_0_] +[endsect] +] + +[template section_Testing_simple_leftmost_longest_matches_platform_linux_compiler_GNU_C_version_5_1_0_[] +[section:section_Testing_simple_leftmost_longest_matches_platform_linux_compiler_GNU_C_version_5_1_0_ Testing simple leftmost-longest matches (platform = linux, compiler = GNU C++ version 5.1.0)] +[table_Testing_simple_leftmost_longest_matches_platform_linux_compiler_GNU_C_version_5_1_0_] +[endsect] +] + [template section_Testing_Perl_searches_platform_Windows_x64_compiler_Microsoft_Visual_C_version_14_0_[] [section:section_Testing_Perl_searches_platform_Windows_x64_compiler_Microsoft_Visual_C_version_14_0_ Testing Perl searches (platform = Windows x64, compiler = Microsoft Visual C++ version 14.0)] [table_Testing_Perl_searches_platform_Windows_x64_compiler_Microsoft_Visual_C_version_14_0_] @@ -99,14 +191,22 @@ [template performance_all_sections[] [section_Testing_Perl_searches_platform_Windows_x64_compiler_Microsoft_Visual_C_version_14_0_] +[section_Testing_Perl_searches_platform_linux_compiler_GNU_C_version_5_1_0_] [section_Testing_leftmost_longest_searches_platform_Windows_x64_compiler_Microsoft_Visual_C_version_14_0_] +[section_Testing_leftmost_longest_searches_platform_linux_compiler_GNU_C_version_5_1_0_] [section_Testing_simple_Perl_matches_platform_Windows_x64_compiler_Microsoft_Visual_C_version_14_0_] +[section_Testing_simple_Perl_matches_platform_linux_compiler_GNU_C_version_5_1_0_] [section_Testing_simple_leftmost_longest_matches_platform_Windows_x64_compiler_Microsoft_Visual_C_version_14_0_] +[section_Testing_simple_leftmost_longest_matches_platform_linux_compiler_GNU_C_version_5_1_0_] ] [template performance_all_tables[] [table_Testing_Perl_searches_platform_Windows_x64_compiler_Microsoft_Visual_C_version_14_0_] +[table_Testing_Perl_searches_platform_linux_compiler_GNU_C_version_5_1_0_] [table_Testing_leftmost_longest_searches_platform_Windows_x64_compiler_Microsoft_Visual_C_version_14_0_] +[table_Testing_leftmost_longest_searches_platform_linux_compiler_GNU_C_version_5_1_0_] [table_Testing_simple_Perl_matches_platform_Windows_x64_compiler_Microsoft_Visual_C_version_14_0_] +[table_Testing_simple_Perl_matches_platform_linux_compiler_GNU_C_version_5_1_0_] [table_Testing_simple_leftmost_longest_matches_platform_Windows_x64_compiler_Microsoft_Visual_C_version_14_0_] +[table_Testing_simple_leftmost_longest_matches_platform_linux_compiler_GNU_C_version_5_1_0_] ] diff --git a/performance/performance.cpp b/performance/performance.cpp index a67ff9b5..798aa330 100644 --- a/performance/performance.cpp +++ b/performance/performance.cpp @@ -6,6 +6,9 @@ #include "performance.hpp" #include +#include +#include +#include #include #include #include diff --git a/performance/posix.cpp b/performance/posix.cpp index 4e0eea70..37f2a8d6 100644 --- a/performance/posix.cpp +++ b/performance/posix.cpp @@ -17,7 +17,7 @@ private: regex_t pe, pe2; bool init; public: - posix_regex() : pe, init(false) {} + posix_regex() : init(false) {} ~posix_regex() { if(init) @@ -58,10 +58,10 @@ public: } void do_nothing()const {} }; - static const initializer init; + static const initializer init2; }; -const posix_regex::initializer posix_regex::init; +const posix_regex::initializer posix_regex::init2; bool posix_regex::match_test(const char * text) @@ -79,17 +79,18 @@ unsigned posix_regex::find_all(const char * text) while(regexec(&pe, text, 30, m, flags) == 0) { ++count; - text = m[0].rm_so; - if(*text) - ++text; - flags = REG_NOTBOL; + text += m[0].rm_eo; + if(m[0].rm_eo - m[0].rm_so) + flags = *(text - 1) == '\n' ? 0 : REG_NOTBOL; + else + flags = 0; } return 0; } std::string posix_regex::name() { - init.do_nothing(); + init2.do_nothing(); return "POSIX"; }