Bugs item #1560161, was opened at 2006-09-17 14:09
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1560161&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Python Library
Group: Python 2.4
Status: Open
Resolution: None
Priority: 5
Submitted By: Michael Gebetsroither (einsteinmg)
Assigned to: Nobody/Anonymous (nobody)
Summary: Better/faster implementation of os.path.split

Initial Comment:
hi,

os.path.split is quite bad regarding performance on 
long pathnames:

def split(p):
    i = p.rfind('/') + 1
    head, tail = p[:i], p[i:]
    if head and head != '/'*len(head):
        head = head.rstrip('/')
    return head, tail

especially this: '/'*len(head)
this constructs an unnecessary string sometimes 
thousands of chars long.

better would be:
if head and len(head) != head.count('/')

BUT:
what is this 'if head and head != '/'*len(head):' for?
this if is imho useless, because
if head exists and is not all '/' => rstrip '/'

imho better would be:
rstrip '/' from head and if head is empty add a '/'
would be the same effect, because a singel '/' is just 
the same as a path as '/'*len(head).

def split(p):
    i = p.rfind('/') + 1
    head, tail = p[:i], p[i:]
    head = head.rstrip('/')
    if not head:
        head = '/'
    return head, tail

such a implementation would be ways faster for long 
pathnames.

greets,
michael

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1560161&group_id=5470
_______________________________________________
Python-bugs-list mailing list 
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to