cvs commit: src/sys/fs/msdosfs msdosfs_conv.c
Nate Lawson
njl at FreeBSD.org
Fri Mar 11 15:27:46 PST 2005
njl 2005-03-11 23:27:46 UTC
FreeBSD src repository
Modified files:
sys/fs/msdosfs msdosfs_conv.c
Log:
The mbnambuf routines combine multiple substrings into a single
long filename. Each substring is indexed by the windows ID, a
sequential one-based value. The previous code was extremely slow,
doing a malloc/strcpy/free for each substring.
This code optimizes these routines with this in mind, using the ID
to index into a single array and concatenating each WIN_CHARS chunk
at once. (The last chunk is variable-length.)
This code has been tested as working on an FS with difficult filename
sizes (255, 13, 26, etc.) It gives a 77.1% decrease in profiled
time (total across all functions) and a 73.7% decrease in wall time.
Test was "ls -laR > /dev/null".
Per-function time savings:
mbnambuf_init: -90.7%
mbnambuf_write: -18.7%
mbnambuf_flush: -67.1%
MFC after: 1 month
Revision Changes Path
1.40 +42 -37 src/sys/fs/msdosfs/msdosfs_conv.c
More information about the cvs-src
mailing list