This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Patch] Regex bracket matcher cache optimization


On Tue, Jan 7, 2014 at 4:02 AM, Paolo Carlini <paolo.carlini@oracle.com> wrote:
> Ideally, I would suggest committing first the improvements in your previous
> patch (by the way, thanks for the numbers!) + the pure bug fixes and
> separate the further performance improvements which have compile-time
> performance implications (how big?), see if, eg, Jon has something to
> recommend. Can we do that?

First patch committed. I later found that the second patch "b.diff" is
based on the committed version (the attach, which fixed the "&&"
problem);

Here's an example to test compile time:

#include <regex>

using namespace std;

int main() {
  regex a("a");
  regex b("a", regex_constants::ECMAScript | regex_constants::icase);
  regex c("a", regex_constants::ECMAScript | regex_constants::collate);
  regex d("a", regex_constants::ECMAScript | regex_constants::icase |
regex_constants::collate);
  return 0;
}

Before the second patch:
g++ -g -Wall -std=c++11 -O3 regextest.cc  3.30s user 0.13s system 99%
cpu 3.435 total

After it:
g++ -g -Wall -std=c++11 -O3 regextest.cc  4.35s user 0.10s system 99%
cpu 4.454 total

I didn't noticed that's so time consuming. I think reducing the
compile time is possible (by templating several member functions
instead of whole _Compiler<> class).


-- 
Regards,
Tim Shen

Attachment: a-fixed.diff
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]