public inbox for glibc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libc/5807] New: strlen() not effective
@ 2008-02-29  0:43 egmont at gmail dot com
  2008-03-02  3:30 ` [Bug libc/5807] " carlos at codesourcery dot com
                   ` (6 more replies)
  0 siblings, 7 replies; 10+ messages in thread
From: egmont at gmail dot com @ 2008-02-29  0:43 UTC (permalink / raw)
  To: glibc-bugs

Most of the functions similar to strlen() that have to detect whether any bytes
of an integer is zero are very efficient. However, in glibc-2.7/string/strlen.c
this efficient code that's used in lots of other functions is surrounded by an
#if 0, and instead a trivial code is used which exits the loop and examines each
bytes separately if any of the bytes is within the range 129-255 or 0. That is
roughly 15/16 of all random cases in 4-bit architecture and even more in 8-bit.
Hence I think this function is hardly any more efficient than if you read one
long int and then simply examined all its bytes separately.

Is there any reason for the code that looks way more effective and is being used
in many other source files to be commented out here?

-- 
           Summary: strlen() not effective
           Product: glibc
           Version: unspecified
            Status: NEW
          Severity: minor
          Priority: P3
         Component: libc
        AssignedTo: drepper at redhat dot com
        ReportedBy: egmont at gmail dot com
                CC: glibc-bugs at sources dot redhat dot com


http://sourceware.org/bugzilla/show_bug.cgi?id=5807

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


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libc/5807] strlen() not effective
  2008-02-29  0:43 [Bug libc/5807] New: strlen() not effective egmont at gmail dot com
@ 2008-03-02  3:30 ` carlos at codesourcery dot com
  2008-03-02  3:34 ` carlos at codesourcery dot com
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: carlos at codesourcery dot com @ 2008-03-02  3:30 UTC (permalink / raw)
  To: glibc-bugs


------- Additional Comments From carlos at codesourcery dot com  2008-03-02 03:29 -------
The math is wrong. 

It looks glibc has a broken version of Alan Mycroft's HAKMEMC postings.
See: http://www.cl.cam.ac.uk/~am21/progtricks.html

The solution is "((x - 0x01010101) & ~x & 0x80808080)", but the "& ~x" is
missing from the glibc version.

The "#if 0" was added Tue Jan 21 03:39:54 1992 UTC (16 years, 1 month ago) by
roland, and the patch looked like this:
http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/generic/Attic/strlen.c.diff?r1=1.1&r2=1.2&cvsroot=glibc

I can reproduce this on cvs head. The generic strlen function is horribly
inefficient.

Roland can you comment on this? 

What's the legal status of using that algorithm?

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|drepper at redhat dot com   |roland at redhat dot com
             Status|NEW                         |ASSIGNED


http://sourceware.org/bugzilla/show_bug.cgi?id=5807

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


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libc/5807] strlen() not effective
  2008-02-29  0:43 [Bug libc/5807] New: strlen() not effective egmont at gmail dot com
  2008-03-02  3:30 ` [Bug libc/5807] " carlos at codesourcery dot com
@ 2008-03-02  3:34 ` carlos at codesourcery dot com
  2008-03-02 15:12 ` carlos at codesourcery dot com
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: carlos at codesourcery dot com @ 2008-03-02  3:34 UTC (permalink / raw)
  To: glibc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
OtherBugsDependingO|                            |5806
              nThis|                            |


http://sourceware.org/bugzilla/show_bug.cgi?id=5807

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


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libc/5807] strlen() not effective
  2008-02-29  0:43 [Bug libc/5807] New: strlen() not effective egmont at gmail dot com
  2008-03-02  3:30 ` [Bug libc/5807] " carlos at codesourcery dot com
  2008-03-02  3:34 ` carlos at codesourcery dot com
@ 2008-03-02 15:12 ` carlos at codesourcery dot com
  2008-04-17 19:56 ` stas dot yakovlev at gmail dot com
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: carlos at codesourcery dot com @ 2008-03-02 15:12 UTC (permalink / raw)
  To: glibc-bugs


------- Additional Comments From carlos at codesourcery dot com  2008-03-02 15:12 -------
Note: All the string/* operations should use the corrected algorithm, and the
old comments should be removed.

-- 


http://sourceware.org/bugzilla/show_bug.cgi?id=5807

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


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libc/5807] strlen() not effective
  2008-02-29  0:43 [Bug libc/5807] New: strlen() not effective egmont at gmail dot com
                   ` (2 preceding siblings ...)
  2008-03-02 15:12 ` carlos at codesourcery dot com
@ 2008-04-17 19:56 ` stas dot yakovlev at gmail dot com
  2008-04-22 13:04 ` carlos at codesourcery dot com
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: stas dot yakovlev at gmail dot com @ 2008-04-17 19:56 UTC (permalink / raw)
  To: glibc-bugs


------- Additional Comments From stas dot yakovlev at gmail dot com  2008-04-17 19:55 -------
Created an attachment (id=2703)
 --> (http://sourceware.org/bugzilla/attachment.cgi?id=2703&action=view)
Alan Mycroft's hack for strlen()

Hi All.

I know that you only accept patches if
contributor signs an assignment.

But do you accept small bug fix without an
assignment, like that I attached to the bug ?

This is a fix for strlen() only
(I can do it for all other functions if you can accept
patches like this). It deletes old comments,
and adds Alan Mycroft's hack.

Stas.


-- 


http://sourceware.org/bugzilla/show_bug.cgi?id=5807

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


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libc/5807] strlen() not effective
  2008-02-29  0:43 [Bug libc/5807] New: strlen() not effective egmont at gmail dot com
                   ` (3 preceding siblings ...)
  2008-04-17 19:56 ` stas dot yakovlev at gmail dot com
@ 2008-04-22 13:04 ` carlos at codesourcery dot com
  2008-04-23 15:49 ` stas dot yakovlev at gmail dot com
  2009-03-15  8:50 ` drepper at redhat dot com
  6 siblings, 0 replies; 10+ messages in thread
From: carlos at codesourcery dot com @ 2008-04-22 13:04 UTC (permalink / raw)
  To: glibc-bugs


------- Additional Comments From carlos at codesourcery dot com  2008-04-22 13:03 -------
Stas,

The changes are more than trivial, you would need a copyright assignment for
glibc on file with the FSF.

-- 


http://sourceware.org/bugzilla/show_bug.cgi?id=5807

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


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libc/5807] strlen() not effective
  2008-02-29  0:43 [Bug libc/5807] New: strlen() not effective egmont at gmail dot com
                   ` (4 preceding siblings ...)
  2008-04-22 13:04 ` carlos at codesourcery dot com
@ 2008-04-23 15:49 ` stas dot yakovlev at gmail dot com
  2009-03-15  8:50 ` drepper at redhat dot com
  6 siblings, 0 replies; 10+ messages in thread
From: stas dot yakovlev at gmail dot com @ 2008-04-23 15:49 UTC (permalink / raw)
  To: glibc-bugs


------- Additional Comments From stas dot yakovlev at gmail dot com  2008-04-23 15:48 -------
Carlos,

Thanks for reply.

-- 


http://sourceware.org/bugzilla/show_bug.cgi?id=5807

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


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libc/5807] strlen() not effective
  2008-02-29  0:43 [Bug libc/5807] New: strlen() not effective egmont at gmail dot com
                   ` (5 preceding siblings ...)
  2008-04-23 15:49 ` stas dot yakovlev at gmail dot com
@ 2009-03-15  8:50 ` drepper at redhat dot com
  6 siblings, 0 replies; 10+ messages in thread
From: drepper at redhat dot com @ 2009-03-15  8:50 UTC (permalink / raw)
  To: glibc-bugs


------- Additional Comments From drepper at redhat dot com  2009-03-15 08:50 -------
I changed the code.  Although noboy seems to use it.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED


http://sourceware.org/bugzilla/show_bug.cgi?id=5807

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


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libc/5807] strlen() not effective
       [not found] <bug-5807-131@http.sourceware.org/bugzilla/>
  2011-03-16 21:28 ` roland at gnu dot org
@ 2014-07-02  6:59 ` fweimer at redhat dot com
  1 sibling, 0 replies; 10+ messages in thread
From: fweimer at redhat dot com @ 2014-07-02  6:59 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=5807

Florian Weimer <fweimer at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
              Flags|                            |security-

-- 
You are receiving this mail because:
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug libc/5807] strlen() not effective
       [not found] <bug-5807-131@http.sourceware.org/bugzilla/>
@ 2011-03-16 21:28 ` roland at gnu dot org
  2014-07-02  6:59 ` fweimer at redhat dot com
  1 sibling, 0 replies; 10+ messages in thread
From: roland at gnu dot org @ 2011-03-16 21:28 UTC (permalink / raw)
  To: glibc-bugs

http://sourceware.org/bugzilla/show_bug.cgi?id=5807

Roland McGrath <roland at gnu dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|roland at redhat dot com    |drepper.fsp at gmail dot
                   |                            |com

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2014-07-02  6:59 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-02-29  0:43 [Bug libc/5807] New: strlen() not effective egmont at gmail dot com
2008-03-02  3:30 ` [Bug libc/5807] " carlos at codesourcery dot com
2008-03-02  3:34 ` carlos at codesourcery dot com
2008-03-02 15:12 ` carlos at codesourcery dot com
2008-04-17 19:56 ` stas dot yakovlev at gmail dot com
2008-04-22 13:04 ` carlos at codesourcery dot com
2008-04-23 15:49 ` stas dot yakovlev at gmail dot com
2009-03-15  8:50 ` drepper at redhat dot com
     [not found] <bug-5807-131@http.sourceware.org/bugzilla/>
2011-03-16 21:28 ` roland at gnu dot org
2014-07-02  6:59 ` fweimer at redhat dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).