This is the mail archive of the glibc-bugs-regex@sources.redhat.com mailing list for the glibc 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]

[Bug regex/508] New: check_dst_limits is inefficient


This speeds up somewhat the failing test cases for bug 429.

The patch at http://sources.redhat.com/ml/libc-alpha/2004-11/msg00018.html can
already speed up the problematic function by a large amount. 
search_cur_bkref_entry disappears from the profile, and on a reduced testcase
(intermediate between the succeeding and failing testcases)
check_dst_limits_calc_pos is cut to about half the time it used to take.

This is done by hoisting most checks in check_dst_limits_calc_pos out of the
recursive calls, and by optimizing the loops on the backreference cache entries.
   The backreference cache is kept ordered by str_idx, so these loops have two
exit conditions: 1) the backref cache has ended, and 2) we got past this
str_idx.  By flagging the last backreference cache entry for each str_idx, we
can test that there is an entry for our str_idx only on the first iteration (and
sometimes we know there is one), and the flag on every subsequent iteration.

-- 
           Summary: check_dst_limits is inefficient
           Product: glibc
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: regex
        AssignedTo: bonzini at gnu dot org
        ReportedBy: bonzini at gnu dot org
                CC: glibc-bugs-regex at sources dot redhat dot com,glibc-
                    bugs at sources dot redhat dot com
OtherBugsDependingO 429,500
             nThis:


http://sources.redhat.com/bugzilla/show_bug.cgi?id=508

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


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