cvs commit: src/sys/fs/msdosfs msdosfs_conv.c
Tom Rhodes
trhodes at FreeBSD.org
Fri Mar 11 16:37:21 PST 2005
On Fri, 11 Mar 2005 23:27:46 +0000 (UTC)
Nate Lawson <njl at FreeBSD.org> wrote:
> 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
>
That's hot. :)
--
Tom Rhodes
More information about the cvs-src
mailing list