[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug #29117] extreme slowness: dfa.c should provide a callback-on-match
From: |
Paolo Bonzini |
Subject: |
[bug #29117] extreme slowness: dfa.c should provide a callback-on-match interface |
Date: |
Mon, 08 Mar 2010 08:51:06 +0000 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.6) Gecko/20100107 Fedora/3.5.6-1.fc12 Firefox/3.5.6 |
URL:
<http://savannah.gnu.org/bugs/?29117>
Summary: extreme slowness: dfa.c should provide a
callback-on-match interface
Project: grep
Submitted by: bonzini
Submitted on: Mon 08 Mar 2010 09:51:05 AM CET
Category: None
Severity: 4 - Important
Item Group: None
Status: None
Privacy: Public
Assigned to: None
Open/Closed: Open
Discussion Lock: Any
_______________________________________________________
Details:
dfaexec is being called on a full (~32k) buffer every time. However, dfaexec
performs multibyte->wide char conversion of the entire buffer every time,
which is very expensive and leads to several thousand more mbrtowc calls than
would be necessary.
In this gdb session, consider that mbrtowc is called every time "size"
times:
Breakpoint 1, dfaexec (d=0x628800,
begin=0x62b04c ..., size=32678, backref=0x7fffffffdddc) at
../../src/dfa.c:2792
2792 {
(gdb)
Continuing.
Breakpoint 1, dfaexec (d=0x628800,
begin=0x62b0d1 ..., size=32545, backref=0x7fffffffdddc) at
../../src/dfa.c:2792
2792 {
(gdb)
Continuing.
Breakpoint 1, dfaexec (d=0x628800,
begin=0x62b11b ..., size=32471, backref=0x7fffffffdddc) at
../../src/dfa.c:2792
2792 {
(gdb)
Continuing.
Breakpoint 1, dfaexec (d=0x628800,
begin=0x62b16d ..., size=32389, backref=0x7fffffffdddc) at
../../src/dfa.c:2792
2792 {
(gdb)
Continuing.
Breakpoint 1, dfaexec (d=0x628800,
begin=0x62b1ac ..., size=32326, backref=0x7fffffffdddc) at
../../src/dfa.c:2792
2792 {
(gdb)
Continuing.
Breakpoint 1, dfaexec (d=0x628800,
begin=0x62b203 ..., size=32239, backref=0x7fffffffdddc) at
../../src/dfa.c:2792
2792 {
(gdb)
If a callback interface was provided, this additional cost could be
eliminated. dfaexec could easily be implemented on top of this new interface.
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?29117>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/
- [bug #29117] extreme slowness: dfa.c should provide a callback-on-match interface,
Paolo Bonzini <=